2013-12-14 5 views
34

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

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 к моему приложению?

+0

http://stackoverflow.com/questions/19756727/what-do-i-do-about-this-requires-android-permission-interact-across-users-full – 5er

+0

Хорошо, я видел это сообщение несколько раз , Но что это значит? Как я могу присвоить свою приложение той же подписью, что и система? – gurkan

+0

Вам нужно либо * быть * создателем, либо системой, либо убедить их подписать ваше приложение - ни то, что реалистично для большинства разработчиков, т. Е. Вы не можете. Похоже, вы делаете что-то излишне странное.Вы пытались создать простой пример базы данных, начиная с дней до многопользовательской поддержки? –

ответ

18

В соответствии с этим ответом: android.permission.INTERACT_ACROSS_USERS_FULL is a signature level permission. Ваше приложение не сможет использовать его до тех пор, пока оно не будет иметь такую ​​же подпись, что и система.

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

+10

Добавляю ли я это разрешение или нет, почему такой сложный ответ ? – Siddharth

+0

Как говорится в ответе, мы не можем добавить это разрешение в наш файл манифеста Android, если ваше приложение не имеет доступа к подписи уровня системы на вашем устройстве. Другими словами (a.f.a.i.k.), эта функция может использоваться только OEM-производителями устройств. – SamSPICA

+2

На устройстве Samsung я получаю исключение, если я его не использую. На не-samsung, если я его использую, я получаю исключение. Что я делаю в этом cae? – Siddharth

0

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

0

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

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

4

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

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

+1

Спасибо, у меня была эта ошибка при обновленной установке Xamarin, и это действительно помогло. – WickedW

Смежные вопросы