#java #android #android-intent #android-pendingintent
#java #Android #android-намерение #android-pendingintent для Android
Вопрос:
Я пытаюсь запустить действие из Android Jobservice, но оно не запускалось. Когда я запускаю действие из конструктора уведомлений с помощью метода addAction, я могу это сделать, но то же самое я должен делать без какого-либо согласия пользователя, и вот я терплю неудачу.
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:
С Android 10 фоновым приложениям не разрешается запускать действия напрямую. Вместо этого им нужно показывать уведомление пользователю и получать согласие пользователя. Исключение из этого правила — если вашему приложению предоставлено разрешение SYSTEM_ALERT_WINDOW.
См.
https://developer.android.com/guide/components/activities/background-starts