SMS 着信電話番号を持ってい123456
ます。インテントを使用して、着信電話番号の SMS メッセージをサービスで開きたいと考えています。2つの方法を試しましたが、満足のいく結果が得られませんでした
最初の方法:
Intent smsIntent = new Intent(Intent.ACTION_MAIN);
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(smsIntent);
方法は、SMS リストを開くだけです。リスト内の着信電話を確認する必要があり、着信 SMS 電話のコンテンツを開くにはもう 1 つの手順が必要です。ステップを無視したい。これは、着信 SMS 電話番号のコンテンツに直接移動することを意味します。
2 番目の方法:
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", SMSphoneNumber);
smsIntent.putExtra("sms_body",SMSBody);
smsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(smsIntent);
この方法では、着信 SMS 電話番号の詳細を読み取ることができますが、送信モードになっています。SMSを閲覧モードで読みたい。
Android Lでどうすればできますか?ありがとう
質問は、メッセージを読む (送信しない) 目的で SMS を開く方法に関連していますか? . 別のものは、2 つのケースのソース コードを提供しています。
更新:これは、SMSの着信電話番号を取得する方法です
public class SMSReceiver extends BroadcastReceiver {
private static final String SMS_RECEIVED = "android.provider.Telephony.SMS_RECEIVED";
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(SMS_RECEIVED)) {
Bundle extras = intent.getExtras();
SmsMessage[] smgs = null;
String infoSender = "";
String infoSMS = "";
if (extras != null) {
// Retrieve the sms message received
Object[] pdus = (Object[]) extras.get("pdus");
smgs = new SmsMessage[pdus.length];
for (int i = 0; i < smgs.length; i++) {
smgs[i] = SmsMessage.createFromPdu((byte[]) pdus[i]);
infoSender += smgs[i].getOriginatingAddress();
if (smgs[i].getMessageBody()!=null)
infoSMS += smgs[i].getMessageBody().toString();
else
infoSMS += ".";
}
Toast.makeText(context, "Phone in SMSReceiver is -" + infoSender + "Body is" + infoSMS, Toast.LENGTH_SHORT).show();
}
}
}
}