我正在开发具有同步适配器和身份验证器的应用程序,用于通过Android帐户管理器添加帐户。我有以下两个问题:
1)可以覆盖帐户&中的“添加帐户”按钮的功能。同步,但我找不到覆盖“删除帐户”按钮功能的方法 - 这可能吗?
2)我读过验证员可以阻止删除他们的帐户,但我无法知道如何...有谁知道如何将其添加到我的身份验证器?这样我就可以使用AbstractAccoutnAuthenticator.getAccountRemovalAllowed来实现我想要的功能。
由于
答案 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。因为它返回一个对话框,该对话框向用户说明一些非常可怕的内容(您需要进行工厂重置的行)