2013-11-08 1 views
11

В моем приложении есть кнопка для запуска активности по умолчанию sms и , она отлично справилась со всей версией Android, кроме новой, Android 4.4 (kitkat) Вот код:Android4.4 не может обрабатывать sms-намерение с помощью «vnd.android-dir/mms-sms»

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

ответ

23

Чтобы запустить приложение 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 никогда не были публичными, поведение может отличаться. Если у вас не было проблем с вашим предыдущим методом, я бы, вероятно, просто придерживался этого пред-4.4 и использовал ACTION_SENDTO для 4.4+.

+1

thx это работает !! но я также пытаюсь отправить тело сообщения с намерением, и я использую aim.putExtra («sms_body», «blahblah»); но это лишнее не работает, и тело сообщения не появляется в активности сообщения. так что у вас есть идея с этим тоже ??? – bluemotion

+0

не уверен, если это возможно больше. вы можете, конечно, заполнить текст тела, используя ACTION_SEND, а также дополнительный EXTRA_TEXT, однако это означает, что вы не можете указать номер телефона. – AdamK