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

我在Android中的SQLite数据库有一个问题。 但是,当我在互联网上做了一个快速的研究,我怀疑这个问题与系统用户没有关系。 我的应用程序不被识别为授权用户访问数据库function。 我试图在堆栈溢出中应用可能的build议解决scheme,但没有一个有效。 这是我每次尝试使用数据库function时所面临的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)build议我可能的权限,我可以select。 但是说到INTERACT_ACROSS_USERS_FULL权限,它performance得像是不知道这个权限。 我的testing设备是在4.3上运行的三星S4。

我假设我不是唯一一个试图在android上使用db的人。 所以有一个解决scheme。

我怎样才能真正添加​​INTERACT_ACROSS_USERS_FULL权限到我的应用程序?

根据这个答案: android.permission.INTERACT_ACROSS_USERS_FULL是一个签名级的权限。 除非与应用程序具有相同的签名,否则您的应用程序将无法使用它。

除非你是创build者或者系统构build者,否则你不可能获得这些东西,或者与他们合作使他们愿意用他们的证书签名你的apk。 换句话说,这对大多数开发人员来说是有限制的。

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

我做了一个项目>干净,并检查bin文件夹被清除并重新生成 ,现在它的工作。

我有同样的问题,并认为我可以帮助你。 我已经使用我的生产密钥库注册了我的应用程序,但使用Eclipsedebugging将其加载到我的手机中。 Eclipsedebugging使用不匹配生产密钥的签名的debug.keystore,并引发此错误。 使用debugging密钥库进行testing,或将apk发送给自己,然后将其下载到手机上。

当我在我的清单中将我的minSdkVersion从8更改为11时,出现此错误。 我改回到8或9,没有更多的错误。

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