isc*_*ind 2 boot android broadcastreceiver
我想使用BroadcastReceiver捕获ACTION_SHUTDOWN和BOOT_COMPLETE.但事实证明两个信号都不会触发BroadcastReceiver(我没有看到任何登录logcat).这是我的源代码.
我给了Manifest许可
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
Run Code Online (Sandbox Code Playgroud)
我尝试以两种方式注册BroadcastReceiver
protected void onCreate(Bundle savedInstanceState)
{
registerReceiver(BootReceiver, new IntentFilter(Intent.ACTION_BOOT_COMPLETED));
registerReceiver(ShutDownReceiver, new IntentFilter(Intent.ACTION_SHUTDOWN));
}
<receiver android:name=".BootReceiver"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<action android:name="android.intent.action.QUICKBOOT_POWERON" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
Run Code Online (Sandbox Code Playgroud)
BootReceiver和ShutDownReceiver的源代码如下
private BroadcastReceiver BootReceiver = new BroadcastReceiver()
{
private String ACTION_BOOT = "android.intent.action.BOOT_COMPLETED";
@Override
public void onReceive(Context context, Intent intent) {
if(intent.getAction().equals(ACTION_BOOT)){
//my stuff
Log.d("Power", "Boot Complete");
}
}
};
private BroadcastReceiver ShutDownReceiver = new BroadcastReceiver()
{
private String ACTION_SHUTDOWN = "android.intent.action.ACTION_SHUTDOWN";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(ACTION_SHUTDOWN)) {
//my stuff
Log.d("Power", "Shutdown Complete");
}
}
};
Run Code Online (Sandbox Code Playgroud)
另外,我在onDestroy中注销了BoradcastReceiver
public void onDestroy()
{
unregisterReceiver(BootReceiver);
unregisterReceiver(ShutDownReceiver);
super.onDestroy();
}
Run Code Online (Sandbox Code Playgroud)
有谁知道我的代码有什么问题?或者我想念的任何事情 谢谢.
我发现了为什么它不起作用.由于我使用HTC设备,广播消息与其他消息不同.
com.htc.intent.action.QUICKBOOT_POWEROFF"android.intent.action.ACTION_SHUTDOWN"com.htc.intent.action.QUICKBOOT_POWERON"在其他设备中,当关闭设备时,它可能会播放" android.intent.action.QUICKBOOT_POWEROFF".