我对Android和编程很新,所以我正在玩不同的东西 在stackoverflow上收集的教程和信息。
我想要完成的是将应用程序与我的SMS BroadcastReceiver作为服务运行,这样我就可以在应用程序处于后台时获得所有短信广播。
另外,如何添加BroadcastReceiver以接收BOOT_COMPLETED的广播并自动启动应用程序?
我需要多次服务,还是1项服务足够? (用于连续检测SMS + BOOT_COMPLETED)
目前我已经创建了一个BroadcastReceiver来获取SMS,就像这样;
public class SMS extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
.. etc ..
.. etc ..
}
我的AndroidManifest.xml文件有接收器和intent-filter
额外的android.provider.Telephony.SMS_RECEIVED
获取短信广播的工作正常,但我不确定从何处开始。
非常感谢所有帮助:)
感谢。
答案 0 :(得分:1)
在BOOT_COMPLETED事件上开始服务并持续接收短信意图。
<强>的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);
}
}
<强> SMSService.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会做这项工作。因此,上面两个代码片段不是必需的。只是最后一个片段就可以完成这项工作。