Android
android.intent.action.BOOT_COMPLETED
如果我使用 “重新启动” 或 “重新启动”,则不会收到意图,但如果我关闭并打开设备,则可以工作。有什么办法可以让这个工作吗?
添加
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
还有
请添加以下权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
并在manifest.zml中添加接收器类条目:
<receiver android:name="com.example.receivers.BootReceiver" >
现在接收者类别:
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
public class BootReceiver extends BroadcastReceiver {
private static final String TAG = "Boot Receiver:::";
/*
* (non-Javadoc)
*
* @see android.content.BroadcastReceiver#onReceive(android.content.Context,
* android.content.Intent)
*/
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
if (intent.getAction().equalsIgnoreCase(
Intent.ACTION_BOOT_COMPLETED)) {
//Boot Receiver Called
}
}
}
}
现在清理并运行您的应用程序。希望在开关机或重启设备后调用该类。让我知道您的反馈。
在清单文件中添加
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
此权限。
添加
android:priority="100"
,启动 onReceive
大约到 30с
<receiver android:name="..." android:exported="true">
<intent-filter android:priority="100">
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>
我使用以下权限:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
在你的“应用程序”块内:
<receiver
android:label="SystemEventReceiver"
android:name=".SystemEventReceiver"
android:enabled="true"
android:exported="false">
<intent-filter android:priority="1000">
<category android:name="android.intent.category.DEFAULT"/>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
<action android:name="android.intent.action.REBOOT"/>
<action android:name="android.intent.action.QUICKBOOT_POWERON"/>
<action android:name="com.htc.intent.action.QUICKBOOT_POWERON"/>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED"/>
<action android:name="android.intent.action.MY_PACKAGE_UNSUSPENDED"/>
</intent-filter>
</receiver>
确保
android:exported="false"
并且不是“true”,否则系统不会将广播发送到您的应用程序。