4

このコードを使用すると、その例外がスローされ、作成されたアカウントがアカウント マネージャーに追加されません。

AccountManager am = AccountManager.get(activity);
Account acc = new Account(name,activity.getString(R.string.account_type));
am.addAccountExplicitly(acc,"Password",null);

私はこれに従いました - http://developer.android.com/training/id-auth/custom_auth.html

なぜそれが引き起こされるのか考えていますか?

//編集: 原因: java.lang.SecurityException: 呼び出し元の uid 10035 がオーセンティケーターの uid とは異なります

4

2 に答える 2

2

マニフェストでアクセス許可を設定しようとしましたが、これが必要になるのではないでしょうか?

<uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>
<uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
于 2012-11-04T16:07:59.413 に答える
1

AddAccountExplicitlyのドキュメントには次のように書かれています。

このメソッドでは、呼び出し元が権限 AUTHENTICATE_ACCOUNTS を保持し、追加されたアカウントのオーセンティケーターと同じ UID を持っている必要があります。

スローされる SecurityException は、問題を説明しています。アカウントを追加しようとしているアプリケーションの UID は、オーセンティケーターの UID とは異なります。つまり、これらは 2 つの異なるアプリケーションです。

これら 2 つを別々のアプリケーションにしたい場合は、それらの間で UID を共有するようにしてください。その方法の詳細については、このページの android:sharedUserId セクションを参照してください。

于 2012-11-26T15:04:29.643 に答える