一般来说,我对 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 文件有接收器和 intent-filter
额外的 android.provider.Telephony.SMS_RECEIVED
获取 SMS 广播工作正常,但我不确定从这里去哪里。
非常感谢所有帮助:)
谢谢。
最佳答案
在 BOOT_COMPLETED 事件上启动您的服务并持续接收 SMS Intent 。
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 Intent 上启动服务。 InentService 会完成这项工作。因此,不需要以上两个代码 fragment 。只需最后一个 fragment 即可完成工作。
关于android - 让 BroadcastReceiver 在后台作为服务运行 + 开机后自动启动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16934540/