我创建了一个带有虚拟帐户的同步适配器,我不希望它出现在“设置”应用程序的“帐户”列表中,也不希望用户按下“设置”中的“添加帐户”按钮。我在同步适配器定义中尝试了android:userVisible =“false”,但仍然显示该帐户。我在仿真器和3个物理设备上试过这个。一切都正常工作,它同步我需要的所有数据,唯一不对的是我在列表上看到帐户,我不想。
我的authenticator.xml是:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="net.astagor.android.hhp.account"
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
/>
我的syncadapter.xml是:
<sync-adapter xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="net.astagor.android.hhp"
android:accountType="net.astagor.android.hhp.account"
android:userVisible="false"
android:supportsUploading="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"
/>
我添加了这样的adpater:
Account account = AuthenticatorService.GetAccount();
AccountManager accountManager = (AccountManager) context
.getSystemService(Context.ACCOUNT_SERVICE);
if (accountManager.addAccountExplicitly(account, null, null)) {
ContentResolver.setIsSyncable(account, StubProvider.AUTHORITY, 1);
ContentResolver.setSyncAutomatically(account,
StubProvider.AUTHORITY, true);
ContentResolver.addPeriodicSync(account, StubProvider.AUTHORITY,
new Bundle(), SYNC_FREQUENCY);
}
我在帐户列表和添加帐户列表中获得了帐户。
请帮忙! :)
答案 0 :(得分:4)
我找到了解决方案。 这就是authenticator.xml的样子:
<account-authenticator xmlns:android="http://schemas.android.com/apk/res/android"
android:accountType="net.astagor.android.hhp.account"
/>
你不能有这些行:
android:icon="@drawable/ic_launcher"
android:smallIcon="@drawable/ic_launcher"
android:label="@string/app_name"
如果你把它们放在一边,无论你在哪里设置android:userVisible =“false”,该帐户都会显示。
答案 1 :(得分:3)
这不是一个真正的答案,但是如果从authenticator.xml中删除标签,它就不会显示在添加的帐户列表中,但是在单击添加帐户后,列表中的图标没有标签。丑陋,可能不是一个好主意。 (这种方法至少在运行4.4的nexus 4上隐藏了帐号 - 尚未检查其他设备)。
我认为同步适配器中的用户可见标记仅在选择帐户后影响同步部分的显示,您可以在其中查看上次同步时间,设置自动同步设置和触发同步。
我也想知道这一点。这一定是可能的,因为我没有看到我的帐户列表中充斥着虚拟帐户。那么,我安装的应用程序中是否有一种方法或几乎没有任何方法需要使用同步适配器?