Подтвердить что ты не робот

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 по умолчанию с номером получателя. поэтому, пожалуйста, помогите.

4b9b3361

Ответ 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

Проблема возникла при тестировании с помощью эмулятора,

Пожалуйста, проверьте с реальным устройством.