我在一个Android应用程序上工作,只需在通知栏中发布一些有关电池的信息。我像所有教程建议的那样开始这个项目:
它的工作非常好,直到活动(注册的两个)停止。我的意思是,按下电话上的后退按钮,并假定调用了onStop()或/和onDestroy()方法。
我的问题是,在活动完成后,我如何才能让BroadcastReceiver运行,只有当我“强制”关闭应用程序时,才能停止接收?
更新:
好的,根据前面的答案,我认为,我需要做的是从清单文件启动我的BroadcastReciever,而不是从活动开始。这就是我想要做的,但它并没有开始接收:
<receiver android:name="com.battery.indicator.BatteryReciever" android:enabled="true" >
<intent-filter>
<action android:name="android.intent.action.BATTERY_CHANGED" ></action>
</intent-filter>
</receiver>name属性是我的Reciever类的整个包路径。操作名称是Eclipse的intellisense发现的。所有这些都在xml的<application></application>部分中。
我做错了什么?
发布于 2012-07-25 16:39:40
创建服务并在报表中注册您的接收器。然后Android会唤醒你的接收器,即使你的应用程序现在已经关闭了。
发布于 2012-07-25 16:51:58
如果您在报表(而不是代码)中声明了您的BroadcastReceiver,并且如果接收启动完成了,那么它将始终是活动的。
在您的清单文件中这样:
<receiver android:name=".BootReceiver">
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
</intent-filter>
</receiver>注意:您需要这个权限才能这样做:
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/> 发布于 2012-07-25 19:34:59
我不确定这是否有帮助,但这是我如何设置我的清单。
<manifest xmlns:android="http://schemas.android.com./apk/res/android"
package="com.namespace"
versionCode, etc>
//List permissions you use, looks like there is one for battery stats
<uses-permission android:name="android.permission.BATTERY_STATS" />
<application>
<receiver android:name=".broadcast_recievers.BatteryReciever">
<action android:name="android.intent.action.BATTERY_CHANGED" />
</receiver>
</application>
</manifest>我想说明的主要区别是,您在清单标记中声明了项目名称空间/包,然后在接收方名称中声明了类的路径。在我的示例中,我将有一个名为BatteryReciever的类位于com.namespace.broadcast_recievers中。
你将不得不做研究,以确定你是否需要包括许可。这篇SO帖子建议你不要这么做。
https://stackoverflow.com/questions/11654526
复制相似问题