同步适配器未在小米上启动

Ale*_*ota 5 android xamarin.android android-syncadapter

我已经在 Xamarin 中编写了一个同步适配器,但在小米 MiUI 下存在问题。

同步适配器启动有两种方法:一种是通过电话“设置->帐户->同步”,另一种是在应用程序中借助ContentResolver.RequestSync()。

首先,我必须为我的应用程序打开 MiUI AutoStart。否则安全系统将错误记录下来。

I/AutoStartManagerService: MIUILOG-拒绝服务:Intent { act=android.content.SyncAdapter cmp=com.fingrad.dashboard/.AdapterService (has extras) } userId : 0 uid : 10186 E/SyncManager: 绑定尝试失败 - 目标: ComponentInfo {com.fingrad.dashboard/com.fingrad.dashboard.AdapterService}

然而,除非应用程序已经在手机内存中,否则第一种方法不起作用。如果 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
Run Code Online (Sandbox Code Playgroud)

换句话说,如果任何条件为真,适配器就不起作用。1) Adapter 服务有 Process 属性 2) 手机内存中没有应用实例。

很明显,问题的根源在于MiUI安全。MiUI 启动同步适配器,启动另一个没有自动启动权限的进程。我尝试设置“Process="application default process name”,但没有帮助。

更新PS 时间过去了,但问题仍然存在。红米 Note 4、MIUI 9.5、Android 7 和红米 Note 3、MIUI 9.5、Android 6。

Ale*_*ota 7

我发现了如何强制 MIUI 启动同步适配器。您必须执行以下操作:

  1. 打开设置 -> 已安装的应用程序
  2. 选择您的应用
  3. 开启自动启动
  4. 关闭任何省电限制

在此处输入图片说明