Android - 无法理解即使重启后服务如何运行

时间:2013-05-04 02:40:58

标签: android broadcastreceiver

某人(成员“buptcoder”)帮助我解决了我遇到的问题,非常快速而且很好。我很高兴我在这里找到了一个社区。谢谢你们所有人。

我已经阅读了很多网页,上面写着“在启动时启动服务”,但我仍然有一个问题。

这是我已有的代码: 我点击了一个运行服务的按钮(在一个Activity中),该服务注册了BroadcastReceiver(SMS_RECEIVED)。当我点击后退按钮(Google Android按钮)时,服务(和BroadcastReceiver)仍处于活动状态。好。

这就是我想要的: 即使用户重启手机,我也希望该服务(已被按钮激活)自动重启。服务的激活是动态的,如果用户没有按下按钮,我不希望它运行。

我知道我应该使用BOOT_COMPLETED动作,但我无法理解我们如何才能完全做到。

如果有人能理解我写的内容并帮助我:)

感谢。

2 个答案:

答案 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 
        } 
    }
}