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

Android-无法理解即使在重新启动后服务如何运行,android,broadcastreceiver,Android,Broadcastreceiver,有人(成员“buptcoder”)帮助我很快很好地解决了一个问题。我很高兴我在这里找到了一个社区。谢谢大家 我读过很多关于“启动时启动服务”的网页,但我脑子里仍然有一个问题 以下是我已有的代码: 我点击一个按钮(在活动中),它运行一个服务,注册一个广播接收器(SMS_RECEIVED)。当我点击后退按钮(谷歌Android按钮)时,服务(和广播接收器)仍然处于活动状态。好 以下是我想要的: 我希望该服务(已被激活的按钮)自动重新启动,即使用户重新启动手机。服务的激活是动态的,如果用户没有按下按钮

有人(成员“buptcoder”)帮助我很快很好地解决了一个问题。我很高兴我在这里找到了一个社区。谢谢大家

我读过很多关于“启动时启动服务”的网页,但我脑子里仍然有一个问题

以下是我已有的代码: 我点击一个按钮(在活动中),它运行一个服务,注册一个广播接收器(SMS_RECEIVED)。当我点击后退按钮(谷歌Android按钮)时,服务(和广播接收器)仍然处于活动状态。好

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

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

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


谢谢。

您提到:
我知道我应该使用action BOOT\u COMPLETED,但我不明白我们如何才能做到这一点。

您想知道如何使用
BOOT\u COMPLETED
操作吗?要使用它,您需要在
清单
文件中进行一些更改。在清单中指定接收者的地方,可以在
标记中添加操作。具体如下:

<receiver android:name=".Receiver" >
     <intent-filter> 
         <action android:name="android.intent.action.BOOT_COMPLETED"/>  
         ....
     </intent-filter>  
</receiver> 
您可能还需要添加此权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />


希望这对其他人有帮助,请发表评论

您提到:
我知道我应该使用action BOOT\u COMPLETED,但我不明白我们如何才能做到这一点。

您想知道如何使用
BOOT\u COMPLETED
操作吗?要使用它,您需要在
清单
文件中进行一些更改。在清单中指定接收者的地方,可以在
标记中添加操作。具体如下:

<receiver android:name=".Receiver" >
     <intent-filter> 
         <action android:name="android.intent.action.BOOT_COMPLETED"/>  
         ....
     </intent-filter>  
</receiver> 
您可能还需要添加此权限

<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />

希望这对其他人有帮助,请发表评论

不客气:)。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 
        } 
    }
}

....
//在你的手机里
@凌驾
公共void onReceive(上下文、意图){
if(intent.getAction()!=null){
if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”)){
//在这里处理短信
} 
}
}
不客气:)。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 
        } 
    }
}

....
//在你的手机里
@凌驾
公共void onReceive(上下文、意图){
if(intent.getAction()!=null){
if(intent.getAction().equals(“android.provider.Telephony.SMS_RECEIVED”)){
//在这里处理短信
} 
}
}

只是补充一下,我认为如果你想让接收器在重新启动后仍能工作,你需要包括BOOT_COMPLETED。这上面有很多线程。检查一下,谢谢你们。你的回答解决了我的一部分问题。事实上,我提到我想让Android知道用户是否按下了按钮(激活服务)。如果不是,我不希望Android在启动时启动我的服务。这是一个动态注册。我认为,如果我在清单文件中硬编码,它将不会是动态的。也许我应该通过addAction动态添加操作(BOOT_COMPLETED),就像我在收到SMS_时所做的那样。(对buptcoder:我将拥有不止一项服务。正如我在上一条消息中所写,按钮启动一项注册广播接收器的服务)。谢谢。再加上一点,我想如果你想让接收器在重启后仍能工作,你需要包括BOOT_COMPLETED。这上面有很多线程。检查一下,谢谢你们。你的回答解决了我的一部分问题。事实上,我提到我想让Android知道用户是否按下了按钮(激活服务)。如果不是,我不希望Android在启动时启动我的服务。这是一个动态注册。我认为,如果我在清单文件中硬编码,它将不会是动态的。也许我应该通过addAction动态添加操作(BOOT_COMPLETED),就像我在收到SMS_时所做的那样。(对buptcoder:我将拥有不止一项服务。正如我在上一条消息中所写,按钮启动一项注册广播接收器的服务)。谢谢