Android: отдельные намерения для электронной почты и SMS - PullRequest
3 голосов
/ 29 июня 2010

У меня есть приложение с двумя кнопками - одна для электронной почты и одна для SMS. В зависимости от нажатой кнопки, я хочу отправить электронное письмо или смс определенного текста. Я закодировал кнопку электронной почты, и она работает нормально. Проблема в том, что всплывающее диалоговое окно дает возможность электронной почты или обмена текстовыми сообщениями. Я хочу разделить их, чтобы, когда пользователь нажимает на электронную почту, присутствовали только параметры электронной почты, а когда пользователь нажимает на SMS, там присутствует только опция обмена сообщениями.

Вот код, который я пробовал.

private void sendEmail(){
    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("text/plain"); 
    i.putExtra(Intent.EXTRA_EMAIL  , new String[]{"recipient@example.com"}); 
    i.putExtra(Intent.EXTRA_SUBJECT, "Subject of the message"); 
    i.putExtra(Intent.EXTRA_TEXT   , "Body of the message"); 
    try { 
        startActivity(Intent.createChooser(i, "Send mail...")); 
    } catch (android.content.ActivityNotFoundException ex) { 
        Toast.makeText(this, "There are no email clients installed.", Toast.LENGTH_SHORT).show(); 
    } 
}

Похоже, что у Intent есть одно намерение. ACTION_SEND для электронной почты и обмена сообщениями.

Есть ли способ их выделить?

Ответы [ 2 ]

5 голосов
/ 29 июня 2010

Вы можете запустить приложение Messaging с предварительно заполненным сообщением, например так:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "The SMS text"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);   

или сделать что-то подобное, чтобы просто отправить его сразу, без представления приложения Messaging:

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

Строка, используемая для отправки только электронной почты:

email.setType("message/rfc822");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...