Android 引导完成和操作关闭从不调用广播接收器
我想用BroadcastReceiver捕捉关闭和引导完成的操作。 但事实证明,这两个信号从未触发BroadcastReceiver(我在logcat上没有看到任何日志)。 这是我的源代码 我在舱单上给予许可Android 引导完成和操作关闭从不调用广播接收器,android,broadcastreceiver,boot,Android,Broadcastreceiver,Boot,我想用BroadcastReceiver捕捉关闭和引导完成的操作。 但事实证明,这两个信号从未触发BroadcastReceiver(我在logcat上没有看到任何日志)。 这是我的源代码 我在舱单上给予许可 <uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" /> 另外,我在onDestroy注销了两个BoradcastReceiver public void onDestroy()
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
另外,我在onDestroy注销了两个BoradcastReceiver
public void onDestroy()
{
unregisterReceiver(BootReceiver);
unregisterReceiver(ShutDownReceiver);
super.onDestroy();
}
有人知道我的代码出了什么问题吗?
或者我错过了什么?谢谢。从Android 3.1开始,您的应用程序可能尚未添加到“BOOT_COMPLETED”可能的接收者列表中,为了获得“BOOT_COMPLETED”操作,您的应用程序必须由用户明确启动,显示活动或其他组件,在此之前,您的应用程序将不会收到您期望的广播,重要的是要知道,如果您“强制关闭”应用程序,它将再次丢失广播,因此,尝试打开一个活动,然后重新启动设备,您将得到它 希望这有帮助 问候 试试这个
<receiver
android:name="packagename.GPSReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter android:priority="500" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>
引导完成
必须在清单中注册。您无法通过registerReceiver()
为其注册,因为当您调用registerReceiver()
时,引导已经发生很久了
很好,关机广播可以与registerReceiver()一起工作,不过在您的情况下,它只会在进程运行时出现。我找到了它不工作的原因。 因为我使用的是HTC设备,所以广播信息与其他设备不同
com.htc.intent.action.QUICKBOOT\u断电
”android.intent.action.action\u关机
”com.htc.intent.action.QUICKBOOT\u开机
”在其他设备中,当关闭设备时,它可能会广播“
android.intent.action.QUICKBOOT\u POWEROFF
”AFAIK,该android:permission
元素将不起作用。感谢您的回答。我自己激活了活动,然后重新启动设备。结果是一样的。看看Commonware answer,你必须在清单中声明你的接收器,以便在应用程序没有完全运行的情况下收听广播,在你的代码中,你的registerReceiver方法永远无法执行……我在关闭设备时也看不到任何日志。你知道吗?thanks@user3138776:我从未尝试过使用操作\u关机
,因此我不知道会发生什么。尽管--ACTION\u SHUTDOWN
不仅仅是为了关闭屏幕(即ACTION\u screen\u off
),但请确保您确实关闭了设备电源。您如何了解HTC的特定意图?我是micromax公司的员工你有什么意见吗?感谢您的回答更安全的方式写以下方式:私人最终字符串ACTION\u SHUTDOWN=“ACTION\u SHUTDOWN”;intent.getAction()包含(操作\u关闭)
public void onDestroy()
{
unregisterReceiver(BootReceiver);
unregisterReceiver(ShutDownReceiver);
super.onDestroy();
}
<receiver
android:name="packagename.GPSReceiver"
android:enabled="true"
android:permission="android.permission.RECEIVE_BOOT_COMPLETED" >
<intent-filter android:priority="500" >
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</receiver>