我正在尝试让我的应用程序以持久的方式监听传入的文本消息。对此最好的方法是什么?
目前,我有一个工作的BroadcastReceiver,我正在为我的应用程序实现本地服务。是以某种方式将BroadcastReceiver实现到服务中的正确方法吗?服务是否会在内存不足的情况下工作?
答案 0 :(得分:2)
是广播接收器是收听传入文本的最佳方式。如果收到传入的短信,请使用IntentService为您的工作做什么,你想对sms recived.u可以为传入的短信注册一个接收器:
清单文件
<receiver class="SMSApp">
<intent-filter>
<action android:value="android.provider.Telephony.SMS_RECEIVED" />
</intent-filter>
</receiver>
<uses-permission android:name="android.permission.RECEIVE_SMS" />
Java文件
public class SMSApp extends BroadcastReceiver{
private static final String LOG_TAG = "SMSApp";
/* package */
static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";
public void onReceive(Context context, Intent intent){
if (intent.getAction().equals(ACTION)){
Bundle bundle = intent.getExtras();
if (bundle != null){
Object[] pdus = (Object[]) bundle.get("pdus");
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++){
messages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
}
for (SmsMessage message : messages){
String strFrom = message.getDisplayOriginatingAddress();
String strMsg = message.getDisplayMessageBody();
}
}
}
}
}
和第二种方式您可以为content://sms/inbox
注册ContentObserver以收听收件箱中的传入短信
答案 1 :(得分:1)
广播接收器不需要启动您的应用程序,因此是收听传入文本的正确方法。
请确保在清单中注册