Мне нужно получить номер телефона из разных типов намерений. Случаи намерения как:Получить sms-адрес из данных о намерениях
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:
для второго намеренного случая.
Я уже пытался перебирать пачке статистов с:
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, поэтому любой ответ был бы действительно полезен! Спасибо заранее.
Я предлагаю вам проверить, как это второй случай, намерение заглянуть внутрь через отладчик. Существуют другие поля, кроме дополнительных, где информация может быть сохранена. См. Http://developer.android.com/reference/android/content/Intent.html#getData%28%29, возможно, это поможет – mhenryk
Perfect! .getDataString() работал! Я честно пытался позвонить getData() раньше, но я вызывал его на неправильный объект. Пожалуйста, напишите это как ответ, чтобы я мог отметить его правильно, чтобы помочь другим с той же проблемой! – Matteo