11

同じカスタム アカウント タイプを使用する 2 つのアプリがあります。これら 2 つのアプリは完全に独立しており、アカウントを共有するだけです。それらのいずれかが起動すると、既存のカスタム アカウントがチェックされ、アカウントが見つからない場合はサインイン ページが表示されます。

AccountAuthenticatorそのため、ライブラリ プロジェクトとして作成し、両方のアプリで参照しています。このチュートリアルによると:

オーセンティケーターのコードを 2 つのアプリにコピーして、そのロジックを共有し、各アプリのサインイン ページのデザインをアプリが属するアプリに合わせて変更したとします。その場合、認証トークンが要求されると、最初にインストールされたアプリのオーセンティケーターが両方のアプリに対して呼び出されます。最初のアプリをアンインストールすると、2 番目のアプリのオーセンティケーターが呼び出されます (現在は 1 つしかないため)。

アプリの 1 つ (どのアプリでも) を実行して呼び出すaddAccountと、サインイン ページがよく表示されます。次に、2 番目のアプリを実行して呼び出すと、addAccount何も起こらず、サインイン ページが表示されません。最初のアプリをアンインストールした後、2 番目のアプリは正常に動作し、サインイン ページが表示されます。では、何が問題で、どうすれば修正できますか?

の実装addAccount:

mAccountManager.addAccount(accountType, authTokenType, null, null, this, new AccountManagerCallback<Bundle>() {
            @Override
            public void run(AccountManagerFuture<Bundle> future) {
                try {
                    Bundle bnd = future.getResult();
                    showMessage("Account was created");
                } catch (Exception e) {
                    e.printStackTrace();
                    showMessage(e.getMessage());
                }
            }
        }, null);

前もって感謝します

4

3 に答える 3

4

@Misagh Emamverdi ええ。マニフェストにその許可がありません。

アンドロイド:共有ユーザーID

他のアプリケーションと共有される Linux ユーザー ID の名前。デフォルトでは、Android は各アプリケーションに固有のユーザー ID を割り当てます。ただし、この属性が 2 つ以上のアプリケーションで同じ値に設定されている場合、同じ証明書によって署名されている場合、それらはすべて同じ ID を共有します。

同じユーザー ID を持つアプリケーションは、互いのデータにアクセスでき、必要に応じて同じプロセスで実行できます。

したがって、android:sharedUserIdは、2 つ以上のアプリケーション間でプロセスを共有するために使用されます ( Udinic Authenticatorなど)。

構文

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="string"
      android:sharedUserId="string"
      android:sharedUserLabel="string resource" 
      android:versionCode="integer"
      android:versionName="string"
      android:installLocation=["auto" | "internalOnly" | "preferExternal"] >
. . .

于 2015-09-08T09:34:09.623 に答える