在Xiaomi手机中重新启动接收器不工作

嗨我们正在开发一个Android应用程序,我们正在使用重新启动接收器,在其中我开始执行一些networking操作的less数服务。

我觉得在一些像夏密等Android设备重新启动接收器不工作。

早些时候我知道,在HTC设备也不工作,所以我再添加一个意图filter<action android:name="android.intent.action.QUICKBOOT_POWERON" />然后它开始工作正常。 现在其他像xiaomi手机它仍然无法正常工作。

我必须另外设置,所以它可以在所有设备中正常工作,而不要求用户手动更新任何设置。

 <receiver android:name="com.xyz.broadcastreceiver.ServiceStarter" android:exported="true" > <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> </intent-filter> </receiver> 

提前致谢。

  • BroadcastReceiver的Manifest和Programmatic注册之间的主要区别
  • Android - 如何获得所有可用的意图filter的列表?
  • 没有GUI的Android活动
  • clear最近的应用程序擦除应用程序内存,我的接收器停止工作
  • LocalBroadcastManager与使用callback
  • Receiver作为Android中的内部类
  • java.lang.IllegalArgumentException:注册太多广播接收器
  • 我将如何检测广播接收器中的运动传感器?
  • 运行MIUI的小米手机有一个内置的启动应用程序拦截器。 也许这是干扰你的启动接收器。

    在意向filter的清单文件中添加这个

     <action android:name="android.intent.action.BOOT_COMPLETED" /> 

    秀米在系统使用5分钟后才报告错误
    实际启动 –
    http://xiaomi.eu/community/threads/alarmmanager-_wakeup-problem.21430/
    你可以尝试添加 –

    android:enabled =“true”和android:exported =“true”
    即使由于制造商的系统变更,它们应该被设置为true
    在Xiomi android自定义操作系统上可能会有所不同。
    只要注意他们的意思
    由于android:exported =“true”
    将让其他应用程序访问您的接收器。

    尝试添加android.intent.category.DEFAULT类别。 对于隐含意图是强制性的,但也许是由于某些原因在小米手机中进行了调整,并且意图是没有通过其中一个testing来接受您的应用程序。

    好的,让我们再试一次。 MIUI有一个内置的安全应用程序。 在安全应用程序中,有一个“启动”部分,用户可以在其中configuration哪个应用程序可以启动,哪个应用程序无法启动。 您的应用程序被禁用默认。 另外,如果您检查Logcat,则可以在启动时看到“权限被拒绝”消息。 手动将您的应用程序添加到列入白名单的应用程序,不幸的是, 您的用户只能这样做。

    你需要添加

     android:enabled="true" 

     android:exported="true" 

    导出可以是假的,但是必须包含导出。

    我认为这是ROM小米问题,用开发版本testing,我在小米Redmi Note 2 Prime上使用了MIUI 6.5.19 Beta版本7.4。 我还没有检查目前无法下载的稳定版本进行服务器维护。 广播接收器在启动时不起作用。

    用小米全球ROM,小米7.1.2稳定的小蜜米4探测同样的应用程序,在pipe理器启动自动启动后,完美的工作。 重新启动和完美的广播接收器和所需的权限。

    现在,我testing了小米.EU 7.3稳定,MIUI 7.3.2,广播接收器在引导和重启时工作正常。 我在安全pipe理器中使用autostart注册了接收器,但在ROM dev版本中不起作用。 我没有与小米官方ROM全球开发testing。

    我的权限:

     <receiver android:name=".service.BootBroadcastReceiver" android:enabled="true" android:exported="true"> <intent-filter> <action android:name="android.intent.action.BOOT_COMPLETED" /> <action android:name="android.intent.action.QUICKBOOT_POWERON" /> <action android:name="android.intent.action.REBOOT"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> 

    你应该看到这里 。 在小米设备中,即使您需要,也会阻止某些权限。 解决它的唯一方法是你必须手动允许你的应用程序这个权限。

    我build议添加android:enabled =“true”,但它已经提供。

    所以我可以告诉你,如果收件人正确地注册,你首先要确保你自己。 你也可以尝试注册它的其他版本 – 这是以编程方式进行注册(最好在onPause()和onResume()),看看它是否接收广播消息。