gpt4 book ai didi

android - 自定义同步不适用于某些三星设备上的 Google 帐户 (com.google)

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:07:49 25 4
gpt4 key购买 nike

我以与 BasicSyncAdapter example 相同的方式实现了一个同步任务除了像这个答案中那样的 Google 帐户:

https://stackoverflow.com/a/2972918/2072569

它适用于除搭载 Android 4.4.2 的三星 SM-P600(Galaxy Note 2014)和其他一些三星平板电脑之外的几乎所有设备。

我的 Manifest 文件中的 ContentProvider 有一个标签。根据 this post,这是此错误的原因在某些三星平板电脑的某些 Android 版本上。

三星是否出于某种原因阻止了向 Google 帐户添加同步任务?

同步是这样添加的:

removeAllSyncTasks();
ContentResolver.setIsSyncable(mAccount, CONTENT_AUTHORITY, 1);
ContentResolver.setSyncAutomatically(mAccount, CONTENT_AUTHORITY, true);
ContentResolver.addPeriodicSync(mAccount, CONTENT_AUTHORITY, Bundle.EMPTY, SYNC_FREQUENCY);

list 部分:

        <service
android:name=".data.sync.SyncService"
android:exported="true"
android:process=":sync">
<intent-filter>
<action android:name="android.content.SyncAdapter"/>
</intent-filter>
<meta-data android:name="android.content.SyncAdapter"
android:resource="@xml/syncadapter" />
</service>


<provider
android:name=".data.provider.LevensContentProvider"
android:authorities="@string/authority"
android:label="@string/app_name_sync"
android:exported="false"
android:syncable="true" />

同步适配器 xml:

<?xml version="1.0" encoding="utf-8"?>
<sync-adapter
xmlns:android="http://schemas.android.com/apk/res/android"
android:contentAuthority="@string/authority"
android:accountType="com.google"
android:userVisible="true"
android:supportsUploading="true"
android:allowParallelSyncs="false"
android:isAlwaysSyncable="true"/>

当我手动开始同步时。 Syncservice 也不在 Samsung 平板电脑上启动(它适用于所有其他设备)。

最佳答案

事实证明它与三星/操作系统版本无关...

我的 SyncHelper 的构造函数是:

 public SyncHelper(Context context, String accountName) {
Account account = null;
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account acc : accounts) {
if(acc.name.equals(accountName)){
account = acc;
}
}
if(account == null){
throw new InvalidParameterException("Account not found");
}
init(context, account);
}

这不会检查帐户类型。列表中有一个类型为 com.evernote 的帐户,它用于同步,当然不会起作用。

添加这个来解决它:

 public SyncHelper(Context context, String accountName) {
Account account = null;
Account[] accounts = AccountManager.get(context).getAccounts();
for (Account acc : accounts) {
if(acc.name.equals(accountName) && acc.type.equals(ACCOUNT_TYPE)){
account = acc;
}
}
if(account == null){
throw new InvalidParameterException("Account not found");
}
init(context, account);
}

现在我可以开始用头撞墙了……;-)

关于android - 自定义同步不适用于某些三星设备上的 Google 帐户 (com.google),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31290783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com