从意图数据中获取短信地址
Get sms address from intent data
我需要从不同类型的意图中检索 phone 号码。
案例的意图为:
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);
当我开始新的 activity 时,我得到了我的额外捆绑包:
Bundle extras = getIntent().getExtras();
if (extras != null) {
//some code
}
具体来说,对于第一种情况,其中意图明确绑定一个额外的键 "address"
我这样做:
extra_phoneNumber = extras.getString("address");
但是我在尝试检索 smsto:
之后的值时遇到了一些问题,用于第二个意图案例。
我已经尝试通过以下方式迭代捆绑包:
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 本身缺少文档,所以任何答案都会非常有帮助!
提前致谢。
我建议您通过调试器检查 2nd case intent 的内部结构。除了 extras 之外,还有其他字段可以存储信息。
请检查 Intent.getData() or the Intent.getDataString()
你可以试试这个代码:
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);
}
我需要从不同类型的意图中检索 phone 号码。 案例的意图为:
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);
当我开始新的 activity 时,我得到了我的额外捆绑包:
Bundle extras = getIntent().getExtras();
if (extras != null) {
//some code
}
具体来说,对于第一种情况,其中意图明确绑定一个额外的键 "address"
我这样做:
extra_phoneNumber = extras.getString("address");
但是我在尝试检索 smsto:
之后的值时遇到了一些问题,用于第二个意图案例。
我已经尝试通过以下方式迭代捆绑包:
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 本身缺少文档,所以任何答案都会非常有帮助! 提前致谢。
我建议您通过调试器检查 2nd case intent 的内部结构。除了 extras 之外,还有其他字段可以存储信息。 请检查 Intent.getData() or the Intent.getDataString()
你可以试试这个代码:
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);
}