1

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

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

这是我已经拥有的代码:我单击一个按钮(在一个活动中),它运行一个服务,它注册了一个广播接收器(SMS_RECEIVED)。当我单击后退按钮(Google Android 按钮)时,服务(和 BroadcastReceiver)仍然处于活动状态。好的。

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

我知道我应该使用动作 BOOT_COMPLETED 但我不明白我们如何才能做到这一点。

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

谢谢。

4

2 回答 2

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" />

希望这有助于其他请评论。

于 2013-05-04T02:47:48.040 回答
0

不客气 :)。Shobhit Puri 很好地提出了你的问题。我想为您的问题添加一些内容。如果你只是想监控短信,你甚至不用写一个服务。只需编写一个接收器,并在您的 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 
        } 
    }
}
于 2013-05-04T03:07:23.870 回答