我试图让我的应用程序以一种持久的方式监听传入的文本消息。最好的方法是什么?
目前,我有一个工作的广播接收器,我正在努力为我的应用程序实现本地服务。以某种方式将广播接收器实现到服务中是正确的方法吗?服务是否在内存不足的情况下工作?

最佳答案

是的,广播接收器是收听接收到的短信的最佳方式。如果接收到的短信已收到,请使用intentservice处理您在接收到的短信上要执行的操作。您可以将接收到的短信的接收器注册为:
清单文件

<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();
               }
            }
        }
    }
}

第二种方法是在收件箱中注册aContentObserverforcontent://sms/inbox以收听传入的短信

10-06 13:21