问题描述
- Android开发时获得开启的通知
-
敲代码遇到一个问题,许久未解决,求解:怎么实现收到开机的广播,程序大致的需求是在开机后谈一个对话框,关键是开机这个广播收不到 【查资料说:在应用进程没有启动的情况下是不能接收到的。】若能帮助,感激不尽!
解决方案
<receiver
android:name="*.*BootRecerver"
android:enabled="true" >
<intent-filter android:priority="1000" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
public class BootRecerver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// 开机启动事件
if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
}
}
}
解决方案二:
<?xml version="1.0" encoding="utf-8"?>
package="wyf.ytl"
android:versionCode="1"
android:versionName="1.0">
android:label="@string/app_name">
<!-- 注册接收器 -->
<!-- 在权限上要允许接收BOOT_COMPLETED消息 -->
这样你的receiver就能收到系统启动的广播 开启你的service了
解决方案三:
你的程序是否安装在SD卡上的?可以参考一下
[Android] 通过监测BOOT_COMPLETED与MEDIA_MOUNTED判断开机,注册android.intent.action.MEDIA_MOUNTED和android.intent.action.MEDIA_EJECT
或
Automatically starting Services in Android after booting,注册android.intent.action.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE
另外参考Android 4.0及以上版本接收开机广播BOOT_COMPLETED、开机自启动服务,你的应用至少在安装后要启动一次。
所以你安装后启动一下你的应用,然后再开机,看看能不能接收到开机广播。
解决方案四:
注册广播:
android:name="**.**.BootRecerver"
android:enabled="true" >
广播接收:
public class BootRecerver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
// 开机启动事件
if (Intent.ACTION_BOOT_COMPLETED.equals(action)) {
//TODO
}
}