Действие, не начинающееся с Android JobService

#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