android - Sync Adapter 未在小米上启动

标签 android xamarin.android android-syncadapter

我用Xamarin写了一个sync adapter,但是在小米MiUI下有问题。

sync adapter的启动方式有两种:一种是通过手机“设置->账户->同步”,另一种是在应用程序中借助ContentResolver.RequestSync()。

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

I/AutoStartManagerService: MIUILOG- Reject service :Intent { act=android.content.SyncAdapter cmp=com.fingrad.dashboard/.AdapterService (has extras) } userId : 0 uid : 10186 E/SyncManager: Bind attempt failed - target: 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

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

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

更新 P.S 时间过去了,但问题依然存在。 Redmi Note 4、MIUI 9.5、Android 7 和 Redmi Note 3、MIUI 9.5、Android 6。

最佳答案

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

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

enter image description here

关于android - Sync Adapter 未在小米上启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43935130/

相关文章:

android - 拆分 sqlite 文件以进行同步

java - 打开 Activity 后,我不会用 fragment 替换布局,但我遇到了异常

android - 如何在 android 中接听来电?

xamarin.forms - Xamarin Forms 数字键盘 - 启用空格和破折号按钮

xamarin.android - MonoDroid : Getting the Resource . Designer.cs 刷新

android - 当应用程序未运行时在后台运行 SyncAdapter

android - android中的联系人同步适配器

Android 服务位置监听器未激活

android - 通过蓝牙共享文本/纯字符串将数据转换为 HTML

c# - SVG 图像不会立即显示在移动屏幕上