0

私は Broadcast Reciever を拡張するセカンドクラスの SMSReciever を作っています。その中で私はコードを書きますが、アクティビティクラスには何を書くべきですか?

4

2 に答える 2

0

次のコードをブロードキャスト レシーバー クラスに記述してください。ここでは、ランチャー アクティビティは必要ありません。

@Override
public void onReceive(Context context, Intent intent) {
     //---get the SMS message passed in---
     Bundle bundle = intent.getExtras();        
     SmsMessage[] msgs = null;
     String str = "";            
     if (bundle != null)
     {
         //---retrieve the SMS message received---
         Object[] pdus = (Object[]) bundle.get("pdus");
         msgs = new SmsMessage[pdus.length];            
         for (int i=0; i<msgs.length; i++){
              msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
              str += "SMS from " + msgs[i].getOriginatingAddress();                     
              str += " :";
              str += msgs[i].getMessageBody().toString();
              str += "\n";        
         }
         //---display the new SMS message---
         Toast.makeText(context, str, Toast.LENGTH_SHORT).show();
     }       

}

以下のコードをマニフェスト ファイルに記述します。

<application
        android:icon="@drawable/icon"
        android:label="@string/app_name" >
        <receiver android:name="IncomingSmsCaptureApp" >
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>
</application>

<uses-permission android:name="android.permission.RECEIVE_SMS" />
于 2012-06-20T09:17:14.783 に答える
0

アクティビティに書き込むコードは次のとおりです

    receiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            final Bundle bundle = intent.getExtras();        
            String str = "";            
            if (bundle != null) {
                //---retrieve the recent SMS message received---
                final Object[] pdus = (Object[]) bundle.get("pdus");
                final SmsMessage[] msgs = new SmsMessage[pdus.length];

                msgs[0] = SmsMessage.createFromPdu((byte[])pdus[0]);
                str += msgs[0].getMessageBody().toString();
                //---display the new SMS message---

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        final TextView smsContent = (TextView) findViewById(R.id.smsContent);
                        smsContent.setText("Message : " + msgs[0].getMessageBody().toString());

                        final TextView smsFrom = (TextView) findViewById(R.id.smsFrom);
                        smsFrom.setText("SMS from : " + msgs[0].getOriginatingAddress());
                    }
                });
            }
        }
    };
    registerReceiver(receiver, new IntentFilter("android.provider.Telephony.SMS_RECEIVED"));

SMSReceiver クラスのコードは次のとおりです。

@Override
public void onReceive(Context context, Intent intent)  {
    //---get the SMS message passed in---
    final Bundle bundle = intent.getExtras();
    String str = "";

    if (bundle != null) {

        //---retrieve the recent SMS message received---
        final Object[] pdus = (Object[]) bundle.get("pdus");
        final SmsMessage[] msgs = new SmsMessage[pdus.length];

        msgs[0] = SmsMessage.createFromPdu((byte[])pdus[0]);
        str += "SMS from " + msgs[0].getOriginatingAddress();
        str += " :";
        str += msgs[0].getMessageBody().toString();
        str += "\n";

        //---display the new SMS message---
        Toast.makeText(context, str, Toast.LENGTH_LONG).show();
    }
}
于 2012-06-20T09:00:36.540 に答える