我已经用Xamarin编写了一个同步适配器,但是在小米MiUI下有一个问题。
启动同步适配器有两种方法:一种是通过电话进行“设置->帐户->同步”,另一种是在应用程序中借助ContentResolver.RequestSync()。
首先,我必须为我的应用程序打开MiUI AutoStart。否则,安全系统会将错误写入日志。
I/AutoStartManagerService: MIUILOG-拒绝服务:意图{ act=android.content.SyncAdapter cmp=com.infrad.dashboard/..AdapterService(已附加)} userId :0 uid : 10186 E/SyncManager:绑定尝试失败-目标: ComponentInfo
尽管如此,除非应用程序已经在电话内存中,否则第一种方法无法工作。如果SyncAdapterService没有空Process属性,第二个方法就不能工作。参见下面的示例。
[Service(Name = "com.fingrad.dashboard.SyncAdapterService"
, Exported = true, Process = ":sync")]
[IntentFilter(new[] { "android.content.SyncAdapter" })]
[MetaData("android.content.SyncAdapter", Resource = "@xml/syncadapter")]
class SyncAdapterService : Service换句话说,如果任何条件都是真的话,适配器就不能工作。1)适配器服务具有进程属性;2)手机内存中没有应用实例。
很明显,问题的根源是MiUI安全性。MiUI启动同步适配器,启动另一个没有自动启动权限的进程。我尝试过设置“Process=”应用程序默认进程名“,但这并没有帮助。
更新 P.S时间过去了,但问题依然存在。Redmi Note 4,MIUI 9.5,Android 7和Redmi Note 3,MIUI 9.5,Android 6。
发布于 2018-05-03 08:02:24
我找到了如何强制MIUI启动同步适配器。你必须做以下工作:

发布于 2020-08-17 06:27:46
您有两个选项来解决这个问题。
1一
<service
android:name="com.example.android.datasync.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>从android清单中删除android:process=":sync"
2二
你必须做以下工作:
发布于 2021-07-22 07:44:30
除了公认的答案之外,还有一个解决问题的选项:在开发人员选项中,启用打开MIUI优化复选框。
https://stackoverflow.com/questions/43935130
复制相似问题