我正在尝试从android jobservice启动一个活动,但它没有启动。当我用addaction方法从notification builder启动一个活动时,我可以这样做,但是同样的,我必须在没有任何用户同意的情况下这样做,我失败了。
final Intent intent1 = Intent intent = new Intent(context, onActivity.class);
final PendingIntent pendingIntent = PendingIntent.getActivity(this, "1",
intent1 , PendingIntent.FLAG_ONE_SHOT);
if(acceptvalid) {
mBuilder.setContentTitle(getString(R.string.app_name))
.setContentText(getString(R.string.on))
.setSmallIcon(R.drawable.icon)
.setDefaults(Notification.DEFAULT_ALL)
.setPriority(NotificationCompat.PRIORITY_HIGH)
.setVisibility(Notification.VISIBILITY_PUBLIC)
.setAutoCancel(true)
.addAction(R.drawable.ic_yes, getString(android.R.string.yes), installPendingIntent);
notificationManager.notify(1, mBuilder.build());
} else {
try{
installPendingIntent.send();
} catch (PendingIntent.CanceledException e) {
LOG.error("error starting activity.", e);
}
}
上面的if循环代码对我有效,而else不起作用。我甚至在else循环中尝试了下面的代码
intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
this.startActivity(intent1 );
有人可以指出我的错误或提出任何建议。
先谢谢你。
1条答案
按热度按时间n3schb8v1#
android 10的后台应用不允许直接启动活动。相反,他们需要向用户显示通知并获得用户同意。例外情况是,如果您的应用程序已被授予“系统警报”窗口权限。
看见
https://developer.android.com/guide/components/activities/background-starts