SecurityException: получить информацию о приложении: ни пользователь 1010069, ни текущий процесс не имеют android.permission.INTERACT_ACROSS_USERS

Я получаю этот странный сбой. Кажется, что AlarmManager.set() вызывает это, но я не понимаю, как и почему.

Трассировки стека:

Fatal Exception: java.lang.RuntimeException: Unable to create application com.rotem.appmanager.app.MainApplication: java.lang.SecurityException: get application info: Neither user 1010069 nor current process has android.permission.INTERACT_ACROSS_USERS.
       at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4560)
       at android.app.ActivityThread.access$1500(ActivityThread.java:151)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1364)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:135)
       at android.app.ActivityThread.main(ActivityThread.java:5258)
       at java.lang.reflect.Method.invoke(Method.java)
       at java.lang.reflect.Method.invoke(Method.java:372)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:974)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:769)
Caused by java.lang.SecurityException: get application info: Neither user 1010069 nor current process has android.permission.INTERACT_ACROSS_USERS.
       at android.os.Parcel.readException(Parcel.java:1546)
       at android.os.Parcel.readException(Parcel.java:1499)
       at android.app.IAlarmManager$Stub$Proxy.set(IAlarmManager.java:215)
       at android.app.AlarmManager.setImpl(AlarmManager.java:409)
       at android.app.AlarmManager.set(AlarmManager.java:208)
       at com.rotem.appmanager.app.DailyAppTasksHelper.scheduleNextDailyAlarm(SourceFile:81)

Код:

    Context context = MainApplication.getAppContext();

    Intent intent = new Intent(context, PrepareAppService.class);

    PendingIntent pendingIntent = PendingIntent.getService(context, CommonConfig.PendingIntentRequestCodes.ALARM_SCHEDULE_SELF_UPDATE, intent, PendingIntent.FLAG_UPDATE_CURRENT);

    AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

    // cancel any existing alarms
    alarmManager.cancel(pendingIntent);

    // Set the alarm to start at approx. 14:00
    Calendar calendar = Calendar.getInstance();
    calendar.setTimeInMillis(System.currentTimeMillis());
    calendar.add(Calendar.DATE, 1);
    calendar.set(Calendar.HOUR_OF_DAY, 14);

    alarmManager.set(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), pendingIntent);
`

Я не хочу добавлять это разрешение.

Как это может быть вызвано/воспроизведено?


person Rotem Matityahu    schedule 21.11.2016    source источник
comment
Это разрешение на уровне подписи. Таким образом, вы должны добавить android:protectionLevel="signature" в файл манифеста, и если ваш целевой API - 23, вы должны использовать разрешение времени выполнения.   -  person Piyush    schedule 21.11.2016
comment
Ваш код выглядит довольно безобидным. Возможно, что-то еще в вашем проекте вызывает проблему. Ознакомьтесь с этим сообщением: несколько других разработчиков столкнулись с таким поведением по очень разным причинам и сумели исправить это так или иначе.   -  person Bö macht Blau    schedule 21.11.2016


Ответы (1)


Вы должны использовать его для некоторого уровня безопасности. Проверьте эту ссылку, может быть, это поможет вам

person Ready Android    schedule 21.11.2016