web-dev-qa-db-ja.com

許可の拒否:これにはAndroid.permission.INTERACT_ACROSS_USERS_FULLが必要です

Androidでsqlite dbに問題があります。しかし、インターネットで簡単に調査したところ、この問題はsqliteではなくシステムユーザーに関連していると思われます。私のアプリは、db機能にアクセスする許可されたユーザーとして認識されません。提案された可能な解決策をスタックオーバーフローに適用しようとしましたが、どれも違いはありませんでした。これは、db機能を使用しようとするたびに直面する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

それでも音がしません。奇妙なことは、インターネット許可を追加しようとすると、Android Studio 0.3(私が使用している)が、私が選択できる許可を提案します。しかし、私のテストデバイスは4.3で実行されているSamsung S4です。

Androidでdbを使用しようとするのは私だけではないと思います。解決策があります。

アプリケーションにINTERACT_ACROSS_USERS_FULL権限を実際に追加するにはどうすればよいですか?

34
gurkan

この回答によると: Android.permission.INTERACT_ACROSS_USERS_FULLは署名レベルのアクセス許可です。 アプリは、システムと同じ署名を持つまで、それを使用しない限り使用できません。

これは、作成者またはシステムビルドのいずれかであるか、証明書を使用してapkに署名するように協力している場合を除き、達成できるものではありません。つまり、これはほとんどの開発者にとって立ち入り禁止です。

19
SamSPICA

エラーが発生しましたAndroid.permission.INTERACT_ACROSS_USERS_FULLプロジェクトのbinディレクトリで競合が発生したためです。アプリのパッケージIDにいくつか変更を加えましたが、binディレクトリのapp-file-1.apkがプロジェクトと一致しません。

project> cleanを実行し、binフォルダーがcleared and regeneratedであることを確認しました。これで動作します。

5
Pelanes

マニフェストでminSdkVersionを8から11に変更すると、このエラーが発生します。私はそれを8または9に戻し、それ以上のエラーはありませんでした。

マニフェストでminSdkVersionを変更してみてください。バージョン10、11、および12でクラッシュとエラーの結果を繰り返すことができました(アプリがクラッシュし、LogCatに「requires Android.permission.INTERACT_ACROSS_USERS_FULL」が表示されます)

0
user3542309

自動入力を無効にしてみてください。 Android Oreo。これを確認してください。 link

このコードをアプリに追加するだけです:

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

私は同じ問題を抱えていて、あなたを助けることができると思います。実稼働キーストアにアプリを登録しましたが、Eclipseデバッグを使用して携帯電話にロードしていました。 Eclipseデバッグは、実稼働キーの署名と一致しないdebug.keystoreを使用し、このエラーをスローします。テストの代わりにデバッグキーストアを使用するか、apkを自分に送信して携帯電話にダウンロードします。

0