5

始める前に、いくつかの回答を読みましたが、役に立たないことを強調したいと思います。お気に入り:

重複問題...

addAccount は、Securityexception によって引き起こされた IllegalStateException を明示的にスローします

SecurityException: 呼び出し元の uid XXXX がオーセンティケーターの uid とは異なります ...

タイトルが示すように、アプリケーション (サービスではない) のアクティビティで AccountManager を使用しようとしていますが、成功しません。4.3 エミュレーター (Intel イメージ) を使用しています。エミュレーター上のすべてのアカウントを簡単に一覧表示できます (Android インターフェースを介して追加されます) が、作成しようとするとエラーが発生します:

09-14 13:21:21.863: E/AndroidRuntime(3291): java.lang.SecurityException: caller uid 10046 is different than the authenticator's uid
09-14 13:21:21.863: E/AndroidRuntime(3291):     at android.os.Parcel.readException(Parcel.java:1431)
09-14 13:21:21.863: E/AndroidRuntime(3291):     at android.os.Parcel.readException(Parcel.java:1385)
09-14 13:21:21.863: E/AndroidRuntime(3291):     at android.accounts.IAccountManager$Stub$Proxy.addAccountExplicitly(IAccountManager.java:719)
09-14 13:21:21.863: E/AndroidRuntime(3291):     at android.accounts.AccountManager.addAccountExplicitly(AccountManager.java:612)

ここに私の簡単なコードスニペットがあります:

Login.java ->

public class Login extends AccountAuthenticatorActivity {
...
    protected void onCreate(Bundle savedInstanceState) { 
    ...
        AccountManager accountmanager = AccountManager.get(this);

        Account userAccount = new Account(“Test”, “test.activities”);

        if (accountmanager.addAccountExplicitly(userAccount, “pass”, null))
        System.out.println(“Added success”);
        else System.out.println(“Added failed”);

    }
...
}

res/xml/authenticator.xml

<?xml version="1.0" encoding="utf-8"?>
<account-authenticator 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:accountType="test.activities"
    android:icon="@drawable/ic_launcher"
    android:smallIcon="@drawable/ic_launcher"
    android:label="@string/app_name"                 
/>

マニフェスト:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="xxxx"
    android:versionCode="1"
    android:versionName="1.0" 
    >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="17" />
    <uses-permission android:name="android.permission.GET_ACCOUNTS"></uses-permission>
    <uses-permission android:name="android.permission.USE_CREDENTIALS"></uses-permission>
    <uses-permission android:name="android.permission.AUTHENTICATE_ACCOUNTS"></uses-permission>
    <uses-permission android:name="android.permission.MANAGE_ACCOUNTS"></uses-permission>

    <uses-permission android:name="android.permission.INTERNET"></uses-permission>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>

    <application
        android:name="Application"
        android:allowBackup="true"
        android:icon="@drawable/cg_icon_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" 
      >       

        <intent-filter>
            <action android:name="android.accounts.AccountAuthenticator" />
        </intent-filter>

        <meta-data android:name="android.accounts.AccountAuthenticator"
                 android:resource="@xml/authenticator" />
    ...
    </application>
</manifest>

2.2 Android フォンで試してみましたが、エラーは同じです。ただし、すべてのアカウントを正常に一覧表示できます ( Account[] accounts = accountmanager.getAccounts(); を使用)。このアプリhttps://play.google.com/store/apps/details?id=com.udinic.accounts_exampleも試しましたが、アカウントを追加できます。しかし、私のアプリケーションでは、成功しませんでした。

4

0 に答える 0