запустить приложение смс с намерением - PullRequest
136 голосов
/ 03 марта 2010

У меня есть вопрос о намерении ... Я пытаюсь запустить приложение смс ...

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setType("vnd.android-dir/mms-sms");
int flags = Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP |
    Intent.FLAG_ACTIVITY_CLEAR_TOP;
intent.setFlags(flags);
intent.setData(Uri.parse("content://sms/inbox"));
context.startActivity(intent);

Итак, вы можете видеть, что я слишком много вкладываю в свои намерения, но это потому, что я не знаю, как я могу это сделать ... Спасибо в

Ответы [ 19 ]

228 голосов
/ 03 марта 2010

Чтобы начать запускать смс, все что вам нужно это:

Intent sendIntent = new Intent(Intent.ACTION_VIEW);         
sendIntent.setData(Uri.parse("sms:"));

Вы можете добавить дополнения, чтобы заполнить ваше собственное сообщение, например:

sendIntent.putExtra("sms_body", x); 

тогда просто запустите действие с намерением.

startActivity(sendIntent);
136 голосов
/ 12 марта 2012
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address", "12125551212");
smsIntent.putExtra("sms_body","Body of Message");
startActivity(smsIntent);
45 голосов
/ 17 июля 2014

Если версия Android - Kitkat или выше, пользователи могут изменить приложение смс по умолчанию. Этот метод получит приложение sms по умолчанию и запустит приложение sms по умолчанию.

private void sendSMS() {    
      if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) // At least KitKat
      {
         String defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(this); // Need to change the build to API 19

         Intent sendIntent = new Intent(Intent.ACTION_SEND);
         sendIntent.setType("text/plain");
         sendIntent.putExtra(Intent.EXTRA_TEXT, "text");

         if (defaultSmsPackageName != null)// Can be null in case that there is no default, then the user would be able to choose
         // any app that support this intent.
         {
            sendIntent.setPackage(defaultSmsPackageName);
         }
         startActivity(sendIntent);

      }
      else // For early versions, do what worked for you before.
      {
         Intent smsIntent = new Intent(android.content.Intent.ACTION_VIEW);
         smsIntent.setType("vnd.android-dir/mms-sms");
         smsIntent.putExtra("address","phoneNumber");         
         smsIntent.putExtra("sms_body","message");
         startActivity(smsIntent);
      }
   }
31 голосов
/ 28 января 2011
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.android-dir/mms-sms");
startActivity(intent);

Это все, что тебе нужно.

19 голосов
/ 03 декабря 2012

Если вы хотите запустить действие «Составление SMS» из какого-либо другого занятия, а также вам необходимо передать номер телефона и текст SMS, используйте этот код:

Uri sms_uri = Uri.parse("smsto:+92xxxxxxxx"); 
Intent sms_intent = new Intent(Intent.ACTION_SENDTO, sms_uri); 
sms_intent.putExtra("sms_body", "Good Morning ! how r U ?"); 
startActivity(sms_intent); 

Примечание: здесь sms_body и smsto: - это ключи для распознавания текста и номера телефона в SMS-сообщениях, поэтому будьте осторожны.

17 голосов
/ 16 мая 2012

Вот код, который откроет SMS-активность, предварительно заполненную номером телефона для который SMS должен быть отправлен. Отлично работает как на эмуляторе, так и на устройстве .

Intent smsIntent = new Intent(Intent.ACTION_SENDTO);
smsIntent.addCategory(Intent.CATEGORY_DEFAULT);
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.setData(Uri.parse("sms:" + phoneNumber); 
5 голосов
/ 30 сентября 2011

Использование

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName("com.android.mms", "com.android.mms.ui.ConversationList");
4 голосов
/ 11 сентября 2015
Intent eventIntentMessage =getPackageManager()
 .getLaunchIntentForPackage(Telephony.Sms.getDefaultSmsPackage(getApplicationContext));
startActivity(eventIntentMessage);
3 голосов
/ 18 июля 2017

Вы можете открыть приложение sms по умолчанию и передать детали, как показано ниже:
Примечание. Если вы хотите отправить несколько номеров, разделите каждый номер с помощью «;» внутренняя строка

String mblNumVar = "9876543210;9123456789";
Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW);
smsMsgAppVar.setData(Uri.parse("sms:" +  mblNumVar));
smsMsgAppVar.putExtra("sms_body", "Hello Msg Tst Txt");
startActivity(smsMsgAppVar);

| Или | Используйте эту функцию:

void openSmsMsgAppFnc(String mblNumVar, String smsMsgVar)
{
    Intent smsMsgAppVar = new Intent(Intent.ACTION_VIEW);
    smsMsgAppVar.setData(Uri.parse("sms:" +  mblNumVar));
    smsMsgAppVar.putExtra("sms_body", smsMsgVar);
    startActivity(smsMsgAppVar); 
}
3 голосов
/ 08 марта 2012

Я использую:

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