是否可以覆盖帐户&同步“删除帐户”功能

时间:2012-03-23 15:04:00

标签: android accountmanager accounts

我正在开发具有同步适配器和身份验证器的应用程序,用于通过Android帐户管理器添加帐户。我有以下两个问题:

1)可以覆盖帐户&中的“添加帐户”按钮的功能。同步,但我找不到覆盖“删除帐户”按钮功能的方法 - 这可能吗?

2)我读过验证员可以阻止删除他们的帐户,但我无法知道如何...有谁知道如何将其添加到我的身份验证器?这样我就可以使用AbstractAccoutnAuthenticator.getAccountRemovalAllowed来实现我想要的功能。

由于

2 个答案:

答案 0 :(得分:7)

回答你的第二个问题:

假设您的包名是com.companyname

创建一个Authenticator类,在com.companyname.auth包中扩展AbstractAccountAuthenticator并在其上实现此方法:

@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 :(得分:1)

以前的用户是对的。但是没有办法自定义对话框(文档说谎并说你可以返回自定义屏幕的意图,这显然没有在代码中实现)。

虽然不推荐返回false。因为它返回一个对话框,该对话框向用户说明一些非常可怕的内容(您需要进行工厂重置的行)