2

さまざまなタイプのインテントから電話番号を取得する必要があります。ケースは次のようなインテントです。

Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address","phoneNumber");         
smsIntent.putExtra("sms_body","message");
startActivity(smsIntent);

また:

Intent sms_intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("smsto:xxxxxxxxxx"); 
sms_intent.putExtra("sms_body", "This is my message!"); 
startActivity(sms_intent);

新しいアクティビティを開始すると、バンドル エクストラを次のように取得します。

Bundle extras = getIntent().getExtras();
    if (extras != null) {
        //some code
    }

具体的には、インテントがエクストラをキーで明示的にバインドする最初のケースでは、次のよう"address"にします。

extra_phoneNumber = extras.getString("address");

smsto:しかし、2 番目のインテント ケースの後に値を取得しようとすると、問題が発生します。

私はすでにバンドルエクストラを反復しようとしました:

for (String key : bundle.keySet()) {
Object value = bundle.get(key);
Log.d(TAG, String.format("%s %s (%s)", key,  
    value.toString(), value.getClass().getName()));

}

しかし、エクストラが空の場合、これは私に NPE を与えます。

Google 自体のドキュメントが不足しているため、何も見つかりませんでした。前もって感謝します。

4

2 に答える 2

0

このコードを試すことができます:

SmsMessage[] msgs = null;
msgs = new SmsMessage[pdus.length];
for (int i = 0; i < msgs.length; i++) {
          msgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
          msg_from = msgs[i].getOriginatingAddress();
          String msgBody = msgs[i].getMessageBody();
          Log.d("resulty", "Message From: " + msg_from + " and it says: " + msgBody);          
}

于 2015-07-30T14:01:12.740 に答える