权限拒绝:这需要android.permission.INTERACT_ACROSS_USERS_FULL

时间:2013-12-14 00:57:41

标签: android sqlite permissions user-permissions

我在Android中遇到sqlite db的问题。但是当我在互联网上进行快速研究时,我怀疑这个问题与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(我使用的是ide)建议我可以选择的权限。但是当谈到INTERACT_ACROSS_USERS_FULL权限时,它的行为就像它不知道这个权限。我的测试设备是在4.3上运行的三星S4。

我认为我不是唯一一个尝试在android上使用db的人。所以有一个解决方案。

如何真正为我的应用程序添加INTERACT_ACROSS_USERS_FULL权限?

5 个答案:

答案 0 :(得分:19)

根据这个答案:android.permission.INTERACT_ACROSS_USERS_FULL is a signature level permission.您的应用程序将无法使用它,除非它与系统具有相同的签名。

除非您是创建者或系统构建者,或者与他们合作以便他们愿意使用他们的证书签署您的apk,否则您无法实现。换句话说,这对大多数开发人员来说是不受限制的。

答案 1 :(得分:4)

我收到错误 android.permission.INTERACT_ACROSS_USERS_FULL ,因为我在项目的 bin目录中有一些冲突。我对我的应用程序包ID进行了一些更改,bin目录中的app-file-1.apk与项目不匹配。

我做了项目>清除并检查bin文件夹是已清除并重新生成,现在可以正常工作。

答案 2 :(得分:0)

我有同样的问题,并认为我可以帮助你。我已经在我的生产密钥库中注册了我的应用程序,但是正在使用Eclipse调试将其加载到我的手机中。 Eclipse调试使用的debug.keystore与生产密钥的签名不匹配,并抛出此错误。请使用调试密钥库进行测试或将apk发送给自己并将其下载到手机上。

答案 3 :(得分:0)

当我在我的Manifest中将minSdkVersion从8更改为11时,我收到此错误。我把它改回到8或9,没有更多的错误。     

尝试更改清单中的minSdkVersion。我能够在版本10,11和12中重复崩溃和错误结果(我的应用程序崩溃并显示"需要android.permission.INTERACT_ACROSS_USERS_FULL"在LogCat中)

答案 4 :(得分:0)

尝试禁用自动填充功能。它在Android Oreo上100%有效。请检查此link

只需将此代码添加到您的应用中:

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