如何解决从Android 10中的服务启动活动
请注意,问题可能与Android 10有关
我正在尝试从myInAppMessagingService启动新的Activity,但是每次都出现空指针异常un startActivitys上下文参数。
这是我的服务代码:
import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import android.util.Log;
import androidx.annotation.NonNull;
import com.google.firebase.inappmessaging.FirebaseInAppMessagingClickListener;
import com.google.firebase.inappmessaging.model.Action;
import com.google.firebase.inappmessaging.model.CampaignMetadata;
import com.google.firebase.inappmessaging.model.InAppMessage;
import viaapp_v2.systems.webview_activity.webview_base;
public class MyFirebaseInAppMessaging extends Service implements FirebaseInAppMessagingClickListener {
String TAG = "MyFirebaseInAppMessaging";
@Override
public IBinder onBind(Intent intent) {
throw new UnsupportedOperationException("Not yet implemented");
}
@Override
public void messageClicked(@NonNull InAppMessage inAppMessage,@NonNull Action action) {
// Determine which URL the user clicked
String url = action.getActionUrl();
Log.d(TAG,"Popup URL :"+url);
// Get general information about the campaign
CampaignMetadata Metadata = inAppMessage.getCampaignMetadata();
Log.d(TAG,"Metadata :"+Metadata);
try{
startActivity(
new Intent(MyFirebaseInAppMessaging.this,webview_base.class)
.putExtra("web_url",url)
);
}catch(Exception e){
e.printstacktrace();
}
}
}
由于第一个参数上下文,我在“ startActivity(..)”行中出错。我尝试了所有操作-getApplicationContext(),MyFirebaseInAppMessaging.this或只是“ this”,但无济于事。
我阅读了Android开发人员提供的restrictions,但我找不到新内容。
否则,该应用程序可以完美运行-webview_base类可以正常运行,其他所有功能(包括myInAppMesaging Services侦听器)也可以正常运行。仅仅是startActivity()中的一个上下文阻止了我。
感谢您的帮助。
-9月7日更新
经过许可后,标记等。我注意到没有任何效果。较新的Android操作系统会通过该应用打开网络,但是较旧的Android操作系统会崩溃,而没有任何特定的崩溃报告。太奇怪了。
解决方法
尝试下面的代码,它将起作用。
您必须添加FLAG- FLAG_ACTIVITY_NEW_TASK
Intent myIntent = new Intent(this,webview_base.class);
myIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(myIntent);
,
如果您的应用程序不可见并且已经一段时间不可见,并且您不想使用通知,那么在Android 10中将不允许该通知,除非
该应用已被用户授予SYSTEM_ALERT_WINDOW权限。
(从问题中提到的restrictions页开始)
因此,这是Android 10的选项。
,仅在AndroidManifest.xml中列出 SYSTEM_ALERT_WINDOW 是不够的。您还需要用户授予应用“在其他应用上绘图”权限。 Check here how to do that easily。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。