ACTION_SEND используется для отправки смс - PullRequest
8 голосов
/ 26 апреля 2011

Я хочу открыть родное приложение для отправки смс, но там должен быть уже номер телефона.Я обнаружил ACTION_SEND, но когда я вызываю свою функцию, возвращается ошибка:

04-26 11:59:15.991: ERROR/AndroidRuntime(20198): android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SENDTO (has extras) }

Мой код представлен здесь:

    private void smsSend(String number) {
    Intent intent = new Intent(Intent.ACTION_SENDTO, null);
    intent.putExtra(Intent.EXTRA_PHONE_NUMBER, number);
    startActivity(intent);
}

Я знаю, что это просто, но я не знаюпочему это не работает, и я не могу найти никакой полезной информации.

Спасибо за любой совет.

Ответы [ 4 ]

50 голосов
/ 26 апреля 2011

Да, это должно работать нормально. http://developer.android.com/reference/android/content/Intent.html#ACTION_SENDTO

Проверьте мой код:

Uri uri = Uri.parse("smsto:0800000123");   
Intent it = new Intent(Intent.ACTION_SENDTO, uri);   
it.putExtra("sms_body", "The SMS text");   
startActivity(it); 
1 голос
/ 10 июня 2011

Спасибо за информацию! Вот мое решение с использованием предыдущей информации:

if (url.indexOf("tel:") > -1) {
    startActivity(new Intent(Intent.ACTION_DIAL, Uri.parse(url)));
    return true;
}
else if (url.indexOf("sms:") > -1){
    startActivity(new Intent(Intent.ACTION_SENDTO, Uri.parse(url)));
    return true;
}

С уважением.

1 голос
/ 26 апреля 2011

Я думаю, вы должны использовать следующий код:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);

//use to fill the sms body
StringBuilder uri = new StringBuilder("sms:" + mobilenumber);
sendIntent.putExtra("sms_body", "");
sendIntent.setType("vnd.android-dir/mms-sms");
sendIntent.setData("");
startActivity(sendIntent);

Думаю, это может вам помочь.

0 голосов
/ 27 сентября 2018

С моей стороны, намерение без параметра URI работает для всех устройств, за исключением Pixel Phone, где мне нужно его использовать, поэтому я проверяю 2 способа:

    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setType("vnd.android-dir/mms-sms");
    final Context context = activity.getApplicationContext();
    final String phoneNumber = "1234567890";
    final String msg = "Hello!";
    smsIntent.putExtra("address", phoneNumber);
    smsIntent.putExtra("sms_body", msg);
    smsIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP |
            Intent.FLAG_ACTIVITY_CLEAR_TOP);

    final PackageManager manager = context.getPackageManager();
    List<ResolveInfo> infos = manager.queryIntentActivities(smsIntent, 0);
    if (infos.size() <1) {
        //No Application can handle your intent
        //try in a another way ...
        Uri uri = Uri.parse("smsto:"+phoneNumber);
        smsIntent = new Intent(Intent.ACTION_SENDTO, uri);
        smsIntent.putExtra("sms_body", msg);
        infos = manager.queryIntentActivities(smsIntent, 0);
    }

    if (infos.size() <1) {
        //No Application can handle your intent
        Log.e("SendMessage","No Application can handle your SMS intent");
    }
...