Android アプリが addAccountExplicitly(account, password, null); でクラッシュする 質問する

Android アプリが addAccountExplicitly(account, password, null); でクラッシュする 質問する

基本認証が成功した後、後で使用するためにアカウントを追加したいと思います。次のコードを使用してこのアカウントを作成しようとしました。

AccountManager accountManager = AccountManager.get(getBaseContext());
final Account basicAccount = new Account(mEmail, "com.example");
accountManager.addAccountExplicitly(basicAccount, mPassword, null);

addAccountExplicitly(...) が呼び出されると、アプリは次のエラーでクラッシュします。

E/AndroidRuntime: FATAL EXCEPTION: main
E/AndroidRuntime: Process: com.example, PID: 19094
E/AndroidRuntime: java.lang.SecurityException: uid 10107 cannot explicitly add accounts of type: com.example
E/AndroidRuntime:     at android.os.Parcel.readException(Parcel.java:1599)
E/AndroidRuntime:     at android.os.Parcel.readException(Parcel.java:1552)
E/AndroidRuntime:     at android.accounts.IAccountManager$Stub$Proxy.addAccountExplicitly(IAccountManager.java:890)
E/AndroidRuntime:     at android.accounts.AccountManager.addAccountExplicitly(AccountManager.java:712)
E/AndroidRuntime:     at com.example.LoginActivity$UserLoginTask.onPostExecute(LoginActivity.java:244)
E/AndroidRuntime:     at com.example.LoginActivity$UserLoginTask.onPostExecute(LoginActivity.java:209)
E/AndroidRuntime:     at android.os.AsyncTask.finish(AsyncTask.java:651)
E/AndroidRuntime:     at android.os.AsyncTask.-wrap1(AsyncTask.java)
E/AndroidRuntime:     at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:668)
E/AndroidRuntime:     at android.os.Handler.dispatchMessage(Handler.java:102)
E/AndroidRuntime:     at android.os.Looper.loop(Looper.java:148)
E/AndroidRuntime:     at android.app.ActivityThread.main(ActivityThread.java:5417)
E/AndroidRuntime:     at java.lang.reflect.Method.invoke(Native Method)
E/AndroidRuntime:     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
E/AndroidRuntime:     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
W/ActivityManager:   Force finishing activity com.example/.LoginActivity

質問:

  1. AccountType は authenticator.xml で指定されているものと同じであると確信しています。コードがクラッシュするのはなぜですか?
  2. AccountManager と Account を基本認証で使用することは可能ですか? これに関する良い例を見つけることができませんでした (すべてトークンを使用しています...)
  3. 私の考えでは、このアカウントを複数のアプリケーションで使用したいと考えています。認証にサービス (インテント付き) を使用するのはベスト プラクティスと考えられますか? これに関する優れたチュートリアルはありますか?

ありがとう、オーヴ

ベストアンサー1

私の場合、同じアカウント名とタイプで、インストールしようとしていたものと異なる署名証明書を持つ別のアプリがデバイスにインストールされていたことが発生していました。

そのため、アプリがクラッシュしていました。

チェック中アンドロイドドキュメントメソッド addAccountExplicity については、次のように記述されています。

このメソッドでは、呼び出し元は指定されたアカウントを所有する認証子と一致する署名を持っている必要があります。

それが私の問題でした

おすすめ記事