2013-12-14 14 views
34

Androidのsqlite dbに問題があります。しかし、私はインターネット上で簡単に研究をしたところ、問題はsqliteではなくシステムユーザーに関係していると思われます。私のアプリケーションは、db機能にアクセスするための許可されたユーザとして認識されません。私は、スタックオーバーフローで可能な提案されたソリューションを適用しようとしましたが、どれも違いを生じませんでした。これは、DB機能を使用しようとするたびに直面するLogCatです。権限拒否:これにはandroid.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 

まだありませんサウンドを追加しようとしました。奇妙なことは、私がインターネットの許可を追加しようとしているときです。Android Studio 0.3(私が使用しているIDE)は、私が選択できる可能なパーミッションを示唆しています。しかし、INTERACT_ACROSS_USERS_FULLパーミッションに関しては、このパーミッションに関する考え方がないように振る舞います。私のテストデバイスは4.3で動作するSamsung S4です。

私はアンドロイドでdbを使用しようとしているのは私だけではないと思います。だから解決策があります。

本当にアプリケーションにINTERACT_ACROSS_USERS_FULL権限を追加できますか?

+0

http://stackoverflow.com/questions/19756727/what-do-i-do-about-this-requires-android-permission-interact-across-usl-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デバイスでは、これを使用しないと例外が発生します。私はそれを使用する場合は非サムスンで私は例外が表示されます。このケーエで私は何をしますか? – Siddharth

0

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

0

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

マニフェストでminSdkVersionを変更してみてください。私はバージョン10、11でクラッシュし、エラー結果を繰り返すことができた、と12

4

私はエラーを得た(私のアプリがクラッシュすると、ディスプレイがLogCatで「android.permission.INTERACT_ACROSS_USERS_FULLが必要です」)android.permission.INTERACT_ACROSS_USERS_FULL私はプロジェクトののbinディレクトリにいくつかの競合があったためです。私は私のアプリパッケージIDにいくつかの変更を行い、binディレクトリ内のapp-file-1.apkはプロジェクトと一致しません。

私はプロジェクト>クリーンを行なったし、binフォルダをクリアしを再生し、それが動作するようになりましたことを確認しました。

+1

ありがとう、私は更新されたXamarinのインストールでこのエラーが発生していて、これは本当に助けになりました。 – WickedW

関連する問題