2012-03-23 16 views
7

Androidアカウントマネージャを使用してアカウントを追加するために使用される同期アダプタとオーセンティケータを持つアプリケーションで作業しています。アカウントと同期の 'アカウントの削除'機能を無効にすることは可能ですか

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

2)私は認証者が自分のアカウントの削除を防ぐことができますが、私はどのように...私の認証者にこれを追加できるのか分かりませんでしたか?そうすれば、私が望む機能を達成するためにAbstractAccoutnAuthenticator.getAccountRemovalAllowedを使用できるかもしれません。あなたのパッケージ名がcom.companyname

パッケージcom.companyname.authにAbstractAccountAuthenticatorを拡張認証クラスを作成し、このメソッドを実装していると仮定すると、

:あなたの2つ目の質問に答えるために

おかげ

答えて

7

その上:

@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" であると仮定します。これが私たちがやっていることであり、API 8から作業しているようです。

1

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

falseを返すことは推奨できません。ユーザーに非常に怖い何かを示すダイアログを返すので(工場出荷時のリセットが必要な行に沿ったもの)

関連する問題