簡體   English   中英

重啟接收器在xiaomi手機中不起作用

[英]Reboot receiver is not working in xiaomi phones

嗨我們正在開發一個Android應用程序,我們正在使用重啟接收器,我正在啟動一些服務,我正在執行一些網絡操作。

我想通了,在像xiaomi等一些Android設備中,重啟接收器無法正常工作。

早些時候我知道在HTC設備中它也不起作用所以我又添加了一個intent過濾器<action android:name="android.intent.action.QUICKBOOT_POWERON" />然后它開始工作正常。 現在像小米這樣的其他手機仍然沒有用。

我必須另外設置,以便它在所有設備中正常工作,而無需用戶手動更新任何設置。

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

提前致謝。

運行MIUI的小米手機有一個內置的啟動應用程序攔截器。 也許這會干擾您的啟動接收器。

好的,我們再試一次。 MIUI有一個內置的安全應用程序。 在安全應用程序中有一個“啟動”部分,用戶可以在其中配置哪個應用程序可以以及哪個應用程序無法在啟動時運行。 您的應用程序默認為禁用。 此外,如果您檢查Logcat,您可以在啟動時看到“權限被拒絕”消息。 將您的應用手動添加到列入白名單的應用中,遺憾的是您的用戶只能這樣做。

在intent-filter中的清單文件中添加它

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

Xiomi報告了在系統發布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類別。 它對於隱式意圖是強制性的,但可能是因為某些原因在小米手機中進行了調整,並且意圖並未將其中一個測試傳遞給您的應用程序。

你需要添加

android:enabled="true"

android:exported="true"

export可以是false,但必須包含export。

我認為這是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>

MIUI有一個內部功能,可以防止應用程序重新啟動以節省電池和RAM。 您必須手動切換自動啟動選項才能接收BOOT_COMPLETED的廣播。 轉到設置>已安裝的應用程序>您的應用程序 然后只需切換自動啟動選項。 沒有選項以編程方式阻止此操作。 相反,如果用戶在使用您的應用時遇到問題(例如:警報未正確觸發),您可以通知應用的用戶,他們可以啟用“設置”中的“自動啟動”。

在此輸入圖像描述

你應該看到這里 在小米設備中,即使您需要,它們也會阻止某些權限。 解決問題的唯一方法是您必須手動允許您的應用獲得此權限。

我建議添加android:enabled =“true”但它已經提供了。

所以我可以告訴你,你首先要確保接收器是否正確注冊。 您還可以嘗試注冊它的其他版本 - 即以編程方式進行注冊(最好在onPause()和onResume()中)並查看它是否正在接收廣播消息。

嘗試從開發人員選項中禁用MUIU優化。 它對我有用。

1-轉到“設置”

2-打開其他設置

3-打開開發人員選項

4-找到Turn on MIUI optimization

5-禁用開關按鈕。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM