2

アプリケーションが着信テキスト メッセージを永続的にリッスンするようにしようとしています。これには何が最善のアプローチでしょうか?

現在、BroadcastReceiver が機能しており、アプリにローカル サービスを実装して遊んでいます。BroadcastReceiverをサービスに実装するのは、これを行う正しい方法ですか? サービスはメモリ不足の状態でも機能しますか?

4

2 に答える 2

2

はい、ブロードキャスト レシーバーは着信テキストを聞くための最良の方法です。着信 SMS が受信された場合、受信した SMS でやりたいことを作業に IntentService を使用します。着信 SMS の受信者を次のように登録できます。

マニフェスト ファイル

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

受信トレイで着信SMSをリッスンするためのContentObserverを登録できる2番目の方法content://sms/inbox

于 2012-04-27T16:16:46.663 に答える
1

ブロードキャストレシーバーは、アプリケーションを起動する必要がないため、着信テキストを聞く正しい方法です。

マニフェストに登録してください

于 2012-04-27T16:07:53.337 に答える