我在Xamarin中编写了一个同步适配器,但在小米MIUI下存在问题。
同步适配器有两种启动方法:一种是通过手机上的“设置->帐户->同步”;另一种是在应用程序中借助ContentResolver.RequestSync()。
首先,我必须为我的应用程序打开MiUI自启动。否则,安全系统会将错误写入日志。
尽管如此,第一种方法只有在应用程序进程已经在手机内存中时才能工作。 如果SyncAdapterService未清空Process属性,则第二种方法不起作用。请参见以下示例。
换句话说,只要以下任一条件成立,适配器就无法正常工作。 1) 适配器服务具有“进程”属性。 2) 手机内存中没有应用程序实例。
显然,问题的根源在于MiUI安全性。 MiUI启动同步适配器时,会启动另一个进程,该进程没有自动启动权限。我尝试设置“Process =“应用程序默认进程名称”,但并没有帮助。
更新:经过一段时间,问题仍然存在。Redmi Note 4,MIUI 9.5,Android 7和Redmi Note 3,MIUI 9.5,Android 6。
同步适配器有两种启动方法:一种是通过手机上的“设置->帐户->同步”;另一种是在应用程序中借助ContentResolver.RequestSync()。
首先,我必须为我的应用程序打开MiUI自启动。否则,安全系统会将错误写入日志。
尽管如此,第一种方法只有在应用程序进程已经在手机内存中时才能工作。 如果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 =“应用程序默认进程名称”,但并没有帮助。
更新:经过一段时间,问题仍然存在。Redmi Note 4,MIUI 9.5,Android 7和Redmi Note 3,MIUI 9.5,Android 6。