我正在开发具有同步适配器和身份验证器的应用程序,用于通过 Android 帐户管理器添加帐户。我有以下两个问题:
1) 可以覆盖“帐户与同步”中“添加帐户”按钮的功能,但我找不到覆盖“删除帐户”按钮功能的方法 - 这可能吗?
2)我读过验证器可以防止删除他们的帐户,但我不知道如何......有人知道如何将其添加到我的验证器中吗?这样我就可以使用 AbstractAccoutnAuthenticator.getAccountRemovalAllowed 来实现我想要的功能。
谢谢
我正在开发具有同步适配器和身份验证器的应用程序,用于通过 Android 帐户管理器添加帐户。我有以下两个问题:
1) 可以覆盖“帐户与同步”中“添加帐户”按钮的功能,但我找不到覆盖“删除帐户”按钮功能的方法 - 这可能吗?
2)我读过验证器可以防止删除他们的帐户,但我不知道如何......有人知道如何将其添加到我的验证器中吗?这样我就可以使用 AbstractAccoutnAuthenticator.getAccountRemovalAllowed 来实现我想要的功能。
谢谢
回答你的第二个问题:
假设你的包名是 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 开始工作。
以前的用户是对的。但是没有办法自定义对话框(文档说谎并说您可以返回自定义屏幕的意图,这显然没有在代码中实现)。
但不建议返回 false。因为它返回一个对话框,告诉用户一些非常可怕的东西(类似于您需要恢复出厂设置的内容)