Отказ в разрешении: для этого требуется android.permission.INTERACT_ACROSS_USERS_FULL
У меня проблема с sqlite db в Android. Но поскольку я быстро провел исследование в Интернете, я подозреваю, что проблема связана не с sqlite, а с системным пользователем. Мое приложение не распознается как авторизованный пользователь для доступа к функциям БД. Я пытался применить возможные предлагаемые решения при переполнении стека, но ни одно из них не помогло. Это LogCat, с которым я сталкиваюсь каждый раз, когда пытаюсь использовать функциональность БД.
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.
Я предполагаю, что я не единственный, кто пытается использовать БД на Android. Так что есть решение.
Как я могу действительно добавить разрешение INTERACT_ACROSS_USERS_FULL в свое приложение?
5 ответов
Согласно этому ответу: android.permission.INTERACT_ACROSS_USERS_FULL
это разрешение уровня подписи. Ваше приложение не сможет использовать его до тех пор, пока оно не будет иметь ту же подпись, что и система.
Это не то, чего вы можете достичь, если только вы не являетесь создателем или сборкой системы или не сотрудничаете с ними так, что они готовы подписать ваш apk своим сертификатом. Другими словами, это запрещено для большинства разработчиков.
Я получил ошибку android.permission.INTERACT_ACROSS_USERS_FULL, потому что у меня были некоторые конфликты в каталоге bin проекта. Я внес некоторые изменения в мой идентификатор пакета приложения, и app-file-1.apk в каталоге bin не соответствует проекту.
Я сделал проект> чистым и проверил, что папка bin была очищена и восстановлена, и теперь она работает.
У меня была та же проблема, и я думаю, что могу помочь вам. Я зарегистрировал свое приложение в своем производственном хранилище ключей, но использовал Eclipse для отладки, чтобы загрузить его в свой телефон. Отладка Eclipse использует debug.keystore, который не соответствует сигнатуре вашего производственного ключа и выдает эту ошибку. Вместо этого используйте хранилище ключей отладки для тестирования или отправьте apk себе и загрузите его на свой телефон.
Попробуйте отключить автозаполнение. Он работает на 100% на Android Oreo. Проверьте эту ссылку
Просто добавьте этот код в ваше приложение:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
window.decorView.importantForAutofill =
View.IMPORTANT_FOR_AUTOFILL_NO_EXCLUDE_DESCENDANTS;
}
Я получаю эту ошибку при изменении значения minSdkVersion с 8 на 11 в манифесте. Я изменил его обратно на 8 или 9 и больше ошибок нет.
Попробуйте изменить ваш minSdkVersion в вашем манифесте. Мне удалось повторить результаты сбоев и ошибок с версиями 10, 11 и 12 (мое приложение аварийно завершает работу и отображает "требует android.permission.INTERACT_ACROSS_USERS_FULL" в LogCat)