Android4.4 не может обрабатывать sms-намерение с помощью "vnd.android-dir/mms-sms"
В моем приложении есть кнопка для запуска активности sms по умолчанию и
он отлично работал со всей версией Android, кроме новой, Android 4.4 (kitkat)
Вот код:
public void onClick(View arg0) {
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", member.getPhoneNumber().trim());
context.startActivity(smsIntent);
}
И я получаю сообщения об ошибках
11-08 02:08:32.815: E/AndroidRuntime(14733): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW typ=vnd.android-dir/mms-sms (has extras) }
Я знаю, что Google внес некоторые изменения в то, как приложение sms по умолчанию обрабатывает sms-намерения.
но мое приложение не является смс-приложением, но у него есть функция для запуска приложения sms по умолчанию с номером получателя. поэтому, пожалуйста, помогите.
Ответы
Ответ 1
Чтобы запустить приложение SMS с номером, используйте действие ACTION_SENDTO
:
Intent intent = new Intent(Intent.ACTION_SENDTO);
intent.setData(Uri.parse("smsto:" + Uri.encode(phoneNumber)));
startActivity(intent);
Это будет работать на Android 4.4. Он также должен работать на более ранних версиях Android, однако, поскольку API никогда не были публичными, поведение может отличаться. Если у вас не было проблем с вашим предыдущим методом, я бы, вероятно, просто придерживался этого pre-4.4 и использовал ACTION_SENDTO
для 4.4 +.
Ответ 2
чтобы запустить приложение смс без вставки номера, вы должны удалить setType
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("sms:"));
intent.putExtra("sms_body", "smsMsgVar");
startActivity(intent);
Ответ 3
Проблема возникла при тестировании с помощью эмулятора,
Пожалуйста, проверьте с реальным устройством.