我想捕获使用BroadcastReceiver的ACTION_SHUTDOWN和BOOT_COMPLETE。 但事实证明,这两个信号从来没有触发BroadcastReceiver(我没有看到logcat上的任何日志)。 这是我的源代码。BOOT_COMPLETE和ACTION_SHUTDOWN永远不会调用BroadcastReceiver
我给的清单
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
允许我尝试这两种方式
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>
和BootReceiver和ShutDownReceiver源代码注册的BroadcastReceiver如
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");
}
}
};
也,我取消注册onDestroy中的两个BoradcastReceiver
public void onDestroy()
{
unregisterReceiver(BootReceiver);
unregisterReceiver(ShutDownReceiver);
super.onDestroy();
}
有人知道我的代码有什么问题吗? 还是我想念的东西?谢谢。
你如何了解HTC的具体意图?我正在与micromax合作吗?感谢您的回答 – Ajay
更安全的写法如下: private final String ACTION_SHUTDOWN =“ACTION_SHUTDOWN”; intent.getAction()。contains(ACTION_SHUTDOWN) –