3

总的来说,我对 Android 和编程非常陌生,所以我正在研究在 stackoverflow 上收集的不同教程和信息。

我想要完成的是让带有我的 SMS BroadcastReceiver 的应用程序作为服务运行,所以当应用程序在后台时我可以获取所有的 SMS 广播。

另外,如何添加一个 BroadcastReceiver 来接收 BOOT_COMPLETED 的广播并自动启动应用程序?

为此我需要几项服务,还是一项服务就足够了?(用于连续检测 SMS + BOOT_COMPLETED)

目前我已经创建了一个用于获取 SMS 的 BroadcastReceiver,如下所示;

public class SMS extends BroadcastReceiver {

   @Override
   public void onReceive(Context context, Intent intent) {
   .. etc ..
   .. etc ..
}

并且我的 AndroidManifest.xml 文件具有接收器和意图过滤器以及附加的android.provider.Telephony.SMS_RECEIVED

获取 SMS 广播工作正常,但我不知道从这里去哪里。

非常感谢所有帮助:)

谢谢。

4

1 回答 1

1

在 BOOT_COMPLETED 事件上启动您的服务并连续接收 SMS 意图。

AndroidManifest.xml

<receiver android:name="BootReceiver" >
   <intent-filter>
   <action android:name="android.intent.action.BOOT_COMPLETED" />
   </intent-filter>
</receiver>

BootReceiver.java

public class BootReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Intent service = new Intent(context, SMSService.class);
        context.startService(service);
  }
}

短信服务.java

public class SMSService extends IntentService {
    @Override
    protected void onHandleIntent(Intent intent) {
         String action = intent.getAction();
         if (Intent.BOOT_COMPLETED.equals(action)) {
             //write your code to process BOOT_COMPLETED intent here
         }
         else if(Intent.SMS_RECEIVED.equals(action)) {
             //Write your code for processing SMS intent here
         }
    }
}

正如Fildor所指出的,没有必要在 BOOT_COMPLETED 意图上启动服务。InentService 会做这项工作。因此,不需要以上两个代码片段。只有最后一个片段可以完成这项工作。

于 2013-06-05T09:41:51.263 回答