8

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

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

2)我读过验证器可以防止删除他们的帐户,但我不知道如何......有人知道如何将其添加到我的验证器中吗?这样我就可以使用 AbstractAccoutnAuthenticator.getAccountRemovalAllowed 来实现我想要的功能。

谢谢

4

2 回答 2

8

回答你的第二个问题:

假设你的包名是 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”。这就是我们所做的,它似乎从 API 8 开始工作。

于 2012-05-22T17:58:07.047 回答
1

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

但不建议返回 false。因为它返回一个对话框,告诉用户一些非常可怕的东西(类似于您需要恢复出厂设置的内容)

于 2012-07-28T04:18:39.757 回答