2010-06-28 2 views
3

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

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

private void sendEmail(){ 
    Intent i = new Intent(Intent.ACTION_SEND); 
    i.setType("text/plain"); 
    i.putExtra(Intent.EXTRA_EMAIL , new String[]{"[email protected]"}); 
    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 для обоих писем & сообщениями.

Любой способ их разделить?

ответ

5

Вы можете запустить приложение Messaging с заполняемых сообщением вроде этого:

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

или сделать что-то вроде этого, чтобы просто отправить его движущийся прямо вперед, не представляя приложение Сообщения:

Uri uri = Uri.parse("smsto:0800000123"); 
Intent it = new Intent(Intent.ACTION_SENDTO, uri); 
it.putExtra("sms_body", "The SMS text"); 
startActivity(it); 
+0

Я использовал первый (так как я хотел запустить SMS ap p, чтобы дать пользователю возможность редактировать текст). Он отлично работает! Как вы используете «vnd.android-dir/mms-sms» для setType для SMS, знаете ли вы, что String используется для отправки только электронной почты? – OceanBlue

-3

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

email.setType("message/rfc822"); 
Смежные вопросы