重启接收器在xiaomi手机中不起作用

时间:2015-04-14 12:53:10

标签: android broadcastreceiver

您好我们正在开发一个Android应用程序,我们正在使用重启接收器,我正在启动一些服务,我正在进行一些网络操作。

我发现在某些Android设备中,例如xiaomi等,重启接收器无效。

早些时候我知道在HTC设备中它也不起作用所以我再添加一个intent过滤器<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>

提前致谢。

10 个答案:

答案 0 :(得分:9)

运行MIUI的小米手机有一个内置的启动应用程序拦截器。也许这会干扰您的启动接收器。

答案 1 :(得分:6)

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

答案 2 :(得分:5)

在intent-filter

中的清单文件中添加此项
<action android:name="android.intent.action.BOOT_COMPLETED" />

答案 3 :(得分:3)

Xiomi报告了在系统实际启动后5分钟仅使用此接收器的错误 -
http://xiaomi.eu/community/threads/alarmmanager-_wakeup-problem.21430/
你可以尝试添加 -

android:enabled="true"android:exported="true"
即使由于制造商系统更改,它们应默认设置为true
它可能与Xiomi android定制的操作系统有所不同。
只要注意它们的含义
android:exported="true"以来
让其他应用程序访问您的接收者。

答案 4 :(得分:3)

尝试添加android.intent.category.DEFAULT类别。它对于隐式意图是强制性的,但可能是因为某些原因在小米手机中被调整,并且意图没有将tests中的一个传递给您的应用程序。

答案 5 :(得分:2)

您需要添加

android:enabled="true"

android:exported="true"

导出可以为false,但必须包含导出。

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

使用稳定的小米全球ROM,MIUI 7.1.2在小米米4中探测相同的应用程序,在管理器中激活自动启动后,工作完美。重启并完美地完成广播接收器和所需的权限。

现在,我测试了Xiaomi.EU 7.3 stable,MIUI 7.3.2,广播接收器在启动和重启时工作正常。我在安全管理器中使用自动启动注册了我的接收器,它不能在ROM开发版中工作。我没有和小米官方ROM全球开发人员一起测试。

我的权限:

<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>

答案 6 :(得分:2)

MIUI的内部功能可防止应用重新启动以节省电池和RAM。您必须手动打开自动启动选项,才能接收 BOOT_COMPLETED 的广播。转到设置>已安装的应用程序>您的应用程序。然后只需打开自动启动选项即可。没有选择以编程方式阻止此操作。相反,您可以通知应用程序的用户在使用应用程序时遇到问题(例如:警报未正确触发),他们可以从“设置”中启用“自动启动”。

enter image description here

答案 7 :(得分:1)

你应该看到here。在小米设备中,即使您需要,它们也会阻止某些权限。解决问题的唯一方法是您必须手动允许您的应用获得此权限。

答案 8 :(得分:0)

我建议添加android:enabled =“true”但已经提供了。

所以我可以告诉你,如果接收器是否正确注册,你首先要确保自己。您还可以尝试注册它的其他版本 - 即以编程方式进行注册(最好是在onPause()&amp; onResume())并查看它是否正在接收广播消息。

答案 9 :(得分:0)

尝试从开发人员选项禁用MUIU优化。它对我有用。

1-转到设置

2-打开其他设置

3-打开开发者选项

4-找到Turn on MIUI optimization

5-禁用开关按钮。