为什么监听不到开机广播action.BOOT_COMPLETED
為什么監(jiān)聽不到開機(jī)廣播action.BOOT_COMPLETED
1. 說明
? ? Android手機(jī)開機(jī)后,會發(fā)送android.intent.action.BOOT_COMPLETED廣播,監(jiān)聽這個廣播就能監(jiān)聽開機(jī)。
2. 代碼
?注冊廣播 ?
<receiver android:name="com.javen.broadcast.BootBroadCastReceiver" ><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" ></action></intent-filter> </receiver>添加權(quán)限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />實(shí)現(xiàn)Receiver
public class BootRroadCastReceiver extends BroadcastReceiver {private final String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";@Overridepublic void onReceive(Context context, Intent intent) {if (ACTION_BOOT.equals(intent.getAction()))Toast.makeText(context, R.string.bootup_receiver, Toast.LENGTH_SHORT).show();} }3. 問題
? ? Android API Leve 18(Android4.2)以上的時候,程序可以安裝在SD卡上。如果程序安裝在SD卡上,那么在BOOT_COMPLETED廣播發(fā)送之后,SD卡才會掛載,因此程序無法監(jiān)聽到該廣播。
4. 解決方案
? ? 監(jiān)聽SD卡的掛載。
5. 同時監(jiān)聽的Intent-Filter問題以及SD卡監(jiān)聽不到的問題
? ? ? 如果BOOT_COMPLETED和MEDIA_MOUNTED,MEDIA_EJECT寫在同一個intent-filter中,那么無法檢測到BOOT_COMPLETED,對于沒有SD卡的手機(jī),只能檢測BOOT_COMPLETED,這樣就會導(dǎo)致無法檢測到開機(jī)了。
<receiverandroid:name="com.javen.receiver.SystemEventReceiver"android:permission="android.permission.RECEIVE_BOOT_COMPLETED" ><intent-filter><action android:name="android.intent.action.BOOT_COMPLETED" /></intent-filter><intent-filter><!-- SD卡已經(jīng)成功掛載 --><action android:name="android.intent.action.MEDIA_MOUNTED" /><!-- sd卡存在,但還沒有掛載 --><action android:name="android.intent.action.MEDIA_UNMOUNTED" /><action android:name="android.intent.action.MEDIA_EJECT" /> <data android:scheme="file" /></intent-filter></receiver>?
? ?路過對你有幫助歡迎轉(zhuǎn)發(fā) 推薦 關(guān)注 ?轉(zhuǎn)發(fā)時請?zhí)砑拥刂?http://www.cnblogs.com/zyw-205520/p/4773810.html
?
轉(zhuǎn)載于:https://www.cnblogs.com/zyw-205520/p/4773810.html
總結(jié)
以上是生活随笔為你收集整理的为什么监听不到开机广播action.BOOT_COMPLETED的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 商品类型的下拉框绑定一个事件,通过aja
- 下一篇: 使用PowerShell 链接Azure