Подтвердить что ты не робот

Разрешение отказа: для этого требуется андроид .permission.INTERACT_ACROSS_USERS_FULL

У меня проблема с sqlite db в Android. Но, как я быстро провел исследования в Интернете, я подозреваю, что проблема не связана с sqlite, а с системным пользователем. Мое приложение не признано авторизованным пользователем для доступа к функциям db. Я попытался применить возможные предлагаемые решения в переполнении стека, но ни один из них не изменил ситуацию. Это LogCat, с которым я сталкиваюсь каждый раз, когда я пытаюсь использовать функциональные возможности db.

12-14 02:35:17.721    2953-3355/? E/DatabaseUtils﹕ Writing exception to parcel
java.lang.SecurityException: Permission Denial: get/set setting for user asks to run as user -2 but is calling from user 0; this requires android.permission.INTERACT_ACROSS_USERS_FULL
at com.android.server.am.ActivityManagerService.handleIncomingUser(ActivityManagerService.java:13082)
at android.app.ActivityManager.handleIncomingUser(ActivityManager.java:2038)
at com.android.providers.settings.SettingsProvider.callFromPackage(SettingsProvider.java:577)
at android.content.ContentProvider$Transport.call(ContentProvider.java:279)
at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:273)
at android.os.Binder.execTransact(Binder.java:388)
at dalvik.system.NativeStart.run(Native Method)

Я попытался добавить разрешение

android.permission.INTERACT_ACROSS_USERS_FULL

но звук все равно отсутствует. Странная вещь, когда я пытаюсь добавить разрешение INTERNET Android Studio 0.3 (я использую), предлагает мне возможные разрешения, которые я могу выбрать. Но когда дело доходит до разрешения INTERACT_ACROSS_USERS_FULL, он ведет себя так, как будто не знает об этом разрешении. Мое тестовое устройство - Samsung S4, работающее на 4.3.

Я предполагаю, что я не единственный, кто пытается использовать db для android. Итак, есть решение.

Как я могу добавить в приложение приложение INTERACT_ACROSS_USERS_FULL?

4b9b3361

Ответ 1

В соответствии с этим ответом: android.permission.INTERACT_ACROSS_USERS_FULL - это разрешение уровня подписки. Ваше приложение не сможет использовать его до тех пор, пока оно не будет иметь ту же подпись, что и система.

Это не то, чего вы можете достичь, если только вы не являетесь создателем или системной сборкой или не сотрудничаете с ними, так что они готовы подписать ваш apk с их сертификатом. Другими словами, для большинства разработчиков это не ограничивается.

Ответ 2

Я получил ошибку android.permission.INTERACT_ACROSS_USERS_FULL, потому что у меня были некоторые конфликты в каталоге bin проекта. Я внес некоторые изменения в идентификатор пакета моего приложения, а файл app-file-1.apk в каталоге bin не соответствует проекту.

Я сделал проект > чистый и проверял, что папка bin была очищена и регенерирована, и теперь она работает.

Ответ 3

У меня была такая же проблема, и я думаю, что смогу помочь тебе. Я зарегистрировал свое приложение с моим производственным хранилищем ключей, но использовал отладку Eclipse для загрузки его в свой телефон. В отладке Eclipse используется debug.keystore, который не совпадает с сигнатурой вашего производственного ключа и бросает эту ошибку. Используйте хранилище отладки вместо этого для тестирования или отправки apk себе и загрузить его на свой телефон.

Ответ 4

Я получаю эту ошибку, когда я меняю minSdkVersion с 8 на 11 в моем манифесте. Я изменил его на 8 или 9 и не стал больше ошибок.   

Попробуйте изменить свою minSdkVersion в манифесте. Я смог повторить результаты сбоев и ошибок с версиями 10, 11 и 12 (мое приложение аварийно завершает работу и отображает "требует андроида .permission.INTERACT_ACROSS_USERS_FULL" в LogCat)

Ответ 5

Попробуйте отключить автозаполнение. Он работает на 100% на Android Oreo. Проверьте эту ссылку

Просто добавьте этот код в ваше приложение:

      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
        window.decorView.importantForAutofill = 
        View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS;
    }

Ответ 6

Это может помочь вам, потому что у меня возникла та же проблема, и я могу решить ее.

Поскольку у android 28 есть некоторые ограничения, все разработчики должны просмотреть эти изменения и изменить свои приложения, чтобы обеспечить их надлежащую поддержку, где это применимо к приложению.

https://developer.android.com/about/versions/pie/android-9.0-changes-all

Вот мои некоторые изменения в коде

  1. Android 9 имеет новые функции, такие как вращение. Он может зависнуть, если вы постоянно устанавливаете его в портретный режим в манифесте. Лучше запрашивать ротацию из кода. поэтому я удаляю Android: screenOrientation = "портрет" из manifest.xml

  2. Еще одна проблема в моем коде - статическая регистрация трансляции.

    <intent-filter>
        <action android:name="android.net.conn.CONNECTIVITY_CHANGE" />
    </intent-filter>
    

    Действие android.net.conn.CONNECTIVITY_CHANGE устарело в android P., поэтому я динамически регистрирую его в BaseActivity.java как

    @Override
    protected void onResume() {
    super.onResume();
    registerReceiver(connectReceiver, newIntentFilter("android.net.conn.CONNECTIVITY_CHANGE"));
       }
    
  3. Я обновляю всю библиотеку в build.gradle и удаляю ненужные реализации

Как вывод,

  • пожалуйста, сначала прочтите полную документацию изменений поведения Android
  • внести необходимые изменения (ориентация, трансляция, сервис Backgroud и т.д.), так как они ограничены

Спасибо !