某人(成员“buptcoder”)帮助我解决了我遇到的问题,非常快速而且很好。我很高兴我在这里找到了一个社区。谢谢你们所有人。
我已经阅读了很多网页,上面写着“在启动时启动服务”,但我仍然有一个问题。
这是我已有的代码: 我点击了一个运行服务的按钮(在一个Activity中),该服务注册了BroadcastReceiver(SMS_RECEIVED)。当我点击后退按钮(Google Android按钮)时,服务(和BroadcastReceiver)仍处于活动状态。好。
这就是我想要的: 即使用户重启手机,我也希望该服务(已被按钮激活)自动重启。服务的激活是动态的,如果用户没有按下按钮,我不希望它运行。
我知道我应该使用BOOT_COMPLETED动作,但我无法理解我们如何才能完全做到。
如果有人能理解我写的内容并帮助我:)
感谢。
答案 0 :(得分:1)
你提到过:I know I should use action BOOT_COMPLETED but I can't understand how we can do it exactly.
您想知道如何使用BOOT_COMPLETED
操作?要使用它,您需要在Manifest
文件中进行一些更改。如果您在清单中指定了接收方,则可以在<intent-filter>
标记中添加操作。如下:
<receiver android:name=".Receiver" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
....
</intent-filter>
</receiver>
在广播接收器的OnReceive
功能中,您可以在收到BOOT_COMPLETE
时执行您想要执行的任何操作。类似的东西:
//Inside your BroadCast Receiver:
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction()!= null){
if( intent.getAction().equals("android.intent.action.BOOT_COMPLETED") ){
// Do something here
}
}
}
您可能还需要添加此权限
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
希望这有助于其他请评论。
答案 1 :(得分:0)
欢迎你:)。 Shobhit Puri很好地提出了你的问题。我想为你的问题添加一些内容。 如果您只想监控SMS,您甚至不必编写服务。只需编写一个接收器,并在Androidmanifest.xml中说明它,即使用户重启设备,接收器也能正常工作:
<receiver android:name=".YourSmsReceiver" >
<intent-filter>
<action android:name="android.provider.Telephony.SMS_RECEIVED"/>
....
</intent-filter>
</receiver>
//Inside your YourSmsReceiver
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction()!= null){
if( intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED") ){
// Handle SMS here
}
}
}