0

アプリにBroadcastReceiverがあります。

public class SMSReceiver extends BroadcastReceiver { 

   public void onCreate(){
        Log.i("APP","SMS Receiver started.");
   }

   @Override 
       public void onReceive(Context context, Intent intent) { 
           Log.i("APP", "SMS received.");
       }
   }

そして受信機:

<receiver class="SMSReceiver" android:name=".SMSReceiver" >
    <intent-filter>
        <action android:name="smsreceiver" android:value="android.provider.Telephony.SMS_RECEIVED" />
    </intent-filter>
</receiver>

と:

<uses-permission android:name="android.permission.RECEIVE_SMS"/>

私はそれを始めます:

Intent SMS = new Intent(this, SMSReceiver.class);
sendBroadcast(SMS);

主な活動で。

メッセージの内容を読むにはどうすればよいですか?ありがとう。

4

1 に答える 1

1

メインフェストでこれを宣言します。

<receiver android:name=".SMSReceiver"> 
        <intent-filter android:priority="100"> 
            <action android:name=
                "android.provider.Telephony.SMS_RECEIVED" /> 
        </intent-filter> 
</receiver>

マニフェストで宣言するときに意図的にレシーバーを起動する必要はありません。着信メッセージが到着すると自動的に呼び出されます。

そして、ここに放送受信機のコードがあります:

このコードをonRecieveメソッドに入れます

 if (!intent.getAction().equals("android.provider.Telephony.SMS_RECEIVED")) 
                       return;          
                        bundle = intent.getExtras();

            if (bundle != null) {
                // ---retrieve the SMS message received---
                Object[] pdus = (Object[]) bundle.get("pdus");
                // Set<String> Bundle.keySet();
                msgs = new SmsMessage[pdus.length];
                // DeleteSMSFromInbox(context, msgs);
                for (int i = 0; i < msgs.length; i++) {

                    msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
                    ClsIncomingsmsNo = msgs[i].getOriginatingAddress();
                    System.out.println("ClsIncomingsmsNo" + ClsIncomingsmsNo);
                    msg = msgs[i].getMessageBody().toString();

}

}

于 2012-05-01T13:48:13.527 に答える