8

私は、Android アカウント マネージャーを介してアカウントを追加するために使用される同期アダプターとオーセンティケーターを備えたアプリケーションに取り組んでいます。次の2つの問題があります。

1) アカウントと同期で [アカウントを追加] ボタンの機能を上書きすることはできましたが、[アカウントを削除] ボタンの機能を上書きする方法が見つかりません。これは可能ですか?

2) オーセンティケーターがアカウントの削除を防ぐことができると読みましたが、方法がわかりません...これをオーセンティケーターに追加する方法を知っている人はいますか? そうすれば、 AbstractAccountnAuthenticator.getAccountRemovalAllowed を使用して、必要な機能を実現できる場合があります。

ありがとう

4

2 に答える 2

8

2番目の質問に答えるには:

パッケージ名がcom.companynameであると仮定します

パッケージcom.companyname.authにAbstractAccountAuthenticatorを拡張するAuthenticatorクラスを作成し、このメソッドを実装します。

@Override
public Bundle getAccountRemovalAllowed(AccountAuthenticatorResponse response, Account account) {
    Bundle result = new Bundle();
    boolean allowed = false; // or whatever logic you want here
    result.putBoolean(AccountManager.KEY_BOOLEAN_RESULT, allowed);
    return result;
}

これをマニフェストに追加します。

    <service android:name=".auth.AuthenticationService">
        <intent-filter>
            <action android:name="android.accounts.AccountAuthenticator"></action>
        </intent-filter>
        <meta-data android:name="android.accounts.AccountAuthenticator" android:resource="@xml/authenticator"></meta-data>
    </service>

(lintは、このエクスポートされたサービスに権限が必要ないことを警告することに注意してください)。

次に、res/xmlにauthenticator.xmlファイルを追加します。

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

アカウントの種類が「com.companyname」であると仮定します。これが私たちの仕事であり、API8以降で機能しているようです。

于 2012-05-22T17:58:07.047 に答える
1

前のユーザーは正しいです。ただし、ダイアログをカスタマイズする方法はありません (ドキュメントには嘘があり、明らかにコードに実装されていないカスタム画面のインテントを返すことができると書かれています)。

ただし、false を返すことはお勧めしません。ユーザーに非常に恐ろしいことを言うダイアログが返されるため(工場出荷時設定にリセットする必要があるという行に沿ったもの)

于 2012-07-28T04:18:39.757 に答える