wake-up-neo.com

Starten Sie die SMS-Anwendung mit Absicht

Ich habe eine Frage zu einer Absicht ... Ich versuche die SMS-App zu starten ...

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);

sie sehen also, dass ich zu viele Dinge in meine Absicht gesteckt habe, aber das liegt daran, dass ich nicht weiß, wie ich das tun kann ... Danke

136
Olivier69

Um die SMS-Aktivität zu starten, brauchen Sie nur Folgendes:

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

Sie können Extras hinzufügen, um Ihre eigene Nachricht auszufüllen

sendIntent.putExtra("sms_body", x); 

dann starten Sie einfachActivity mit der Absicht.

startActivity(sendIntent);
230
jqpubliq
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);
137
Pratik Sharma

Wenn Android Version KitKat oder höher ist, können Benutzer die Standard-SMS-Anwendung ändern. Diese Methode ruft die Standard-SMS-App ab und startet die Standard-SMS-App.

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);
      }
   }
45
mustafasevgi
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setType("vnd.Android-dir/mms-sms");
startActivity(intent);

Das ist alles was du brauchst.

31
skyisle

Wenn Sie SMS Verfassen einer Aktivität aus einer anderen Aktivität und Übergeben einer Telefonnummer und SMS Text) möchten, verwenden Sie diesen Code:

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); 

Anmerkung: hier das sms_body und smsto: ist der Schlüssel zum Erkennen des Texts und der Telefonnummer unter SMS= Aktivität erstellen, also seien Sie hier vorsichtig.

21
Pir Fahim Shah

Hier ist der Code, mit dem die Aktivität SMS mit der Telefonnummer gefüllt wird, an die die SMS gesendet werden muss. Dies funktioniert gut auf Emulator sowie das Gerät.

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); 
17
JaydeepW

Verwenden

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setClassName("com.Android.mms", "com.Android.mms.ui.ConversationList");
5
Harinder
Intent eventIntentMessage =getPackageManager()
 .getLaunchIntentForPackage(Telephony.Sms.getDefaultSmsPackage(getApplicationContext));
startActivity(eventIntentMessage);
4
Vinayak V Naik

Ich benutze:

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

Sie können die Standard-SMS-App wie folgt öffnen und Details übergeben:
Hinweis: Wenn Sie an viele Nummern senden möchten, trennen Sie jede Nummer mit ";" innere Zeichenfolge

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);

| Oder | Verwenden Sie diese Funktion:

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
Sujay U N
Intent sendIntent = new Intent(Intent.ACTION_SEND); 
//CHANGE YOUR MESSAGING ACTIVITY HERE IF REQUIRED 
sendIntent.setClassName("com.Android.mms", "com.Android.mms.ui.ComposeMessageActivity");
sendIntent.putExtra("sms_body",msgbody); 
sendIntent.putExtra("address",phonenumber);
//FOR MMS
sendIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse("file:///sdcard/mms.png"));
sendIntent.setType("image/png");
startActivity(sendIntent);
2
Reetpreet Brar
try {
    Intent smsIntent = new Intent(Intent.ACTION_VIEW);
    smsIntent.setData(Uri.parse("smsto:" + Uri.encode(number)));
    smsIntent.putExtra("address", number);
    smsIntent.putExtra("sms_body", message);

    PackageManager pm = activity.getPackageManager();
    List<ResolveInfo> resInfo = pm.queryIntentActivities(smsIntent, 0);

    for (int i = 0; i < resInfo.size(); i++) {
        ResolveInfo ri = resInfo.get(i);
        String packageName = ri.activityInfo.packageName;

        if (packageName.contains("sms")) {
            //Log.d("TAG", packageName + " : " + ri.activityInfo.name);
            smsIntent.setComponent(new ComponentName(packageName, ri.activityInfo.name));
        }
    }
    activity.startActivity(smsIntent);
} catch (Exception e) {
    // Handle Error
}

Beste Art und Weise dies zu tun.

2
BuffMcBigHuge

Der beste Code, der mit der Default SMS app funktioniert, ist.

Uri SMS_URI = Uri.parse("smsto:+92324502****"); //Replace the phone number
Intent sms = new Intent(Intent.ACTION_VIEW,SMS_URI);    
sms.putExtra("sms_body","This is test message"); //Replace the message witha a vairable 
startActivity(sms);
2
Junaid Khan

Der folgende Code funktioniert mit Android 6.0.
Es wird die Suchaktivität in der Standard-Messaging-Anwendung mit den Konversationen in Bezug auf eine bestimmte Zeichenfolge geöffnet.

Intent smsIntent = new Intent(Intent.ACTION_MAIN);
        smsIntent.addCategory(Intent.CATEGORY_LAUNCHER);
        smsIntent.setClassName("com.Android.mms", "com.Android.mms.ui.SearchActivity");
        smsIntent.putExtra("intent_extra_data_key", "string_to_search_for");
        startActivity(smsIntent);  

Sie können die Suchaktivität mit einer Absicht starten. Dadurch wird die Suchaktivität der Standard-Messaging-Anwendung geöffnet. Um nun eine Liste bestimmter Konversationen in der Suchaktivität anzuzeigen, können Sie die Suchzeichenfolge als zusätzliche Zeichenfolge mit dem Schlüssel als angeben

"intent_extra_data_key"

wie im onCreate dieser Klasse gezeigt

String searchStringParameter = getIntent().getStringExtra(SearchManager.QUERY);
    if (searchStringParameter == null) {
        searchStringParameter = getIntent().getStringExtra("intent_extra_data_key" /*SearchManager.SUGGEST_COLUMN_INTENT_EXTRA_DATA*/);
    }
    final String searchString = searchStringParameter != null ? searchStringParameter.trim() : searchStringParameter;

Sie können auch die SENDER_ADDRESS der SMS als zusätzliche Zeichenfolge übergeben, um alle Unterhaltungen mit dieser bestimmten Absenderadresse aufzulisten.

Überprüfen Sie com.Android.mms.ui.SearchActivity für weitere Informationen

Sie können auch diese Antwort

1
godslayer_69

SMS-Absicht:

Intent intent = new Intent("Android.intent.action.VIEW");
        /** creates an sms uri */
        Uri data = Uri.parse("sms:");
        intent.setData(data);
0
Mitul Goti

am emulator funktioniert das für mich

Intent i = new Intent(Intent.ACTION_VIEW, Uri.fromParts("sms", number, null));
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
                i.putExtra("sms_body", remindingReason);

                startActivity(i);
0
user665270

Verfassen SMS:

Uri smsUri = Uri.parse("tel:" + to);
Intent intent = new Intent(Intent.ACTION_VIEW, smsUri);
intent.putExtra("address", to);
intent.putExtra("sms_body", message);
intent.setType("vnd.Android-dir/mms-sms");
startActivity(intent);
0
user3150090

In kotlin kann dies einfach wie folgt implementiert werden:

/**
 * If Android version is KitKat or above, users can change default sms application.
 * This method will get default sms app and start default sms app.
 */
private fun openSMS() {
    val message = "message here"
    val phone = "255754......." //255 Tanzania code.

    val uri = Uri.parse("smsto:+$phone")
    val intent = Intent(Intent.ACTION_SENDTO, uri)

    with(intent) {
        putExtra("address", "+$phone")
        putExtra("sms_body", message)
    }

    when {
        Build.VERSION.SDK_INT >= Build.VERSION_CODES.KitKat -> {
            //Getting the default sms app.
            val defaultSmsPackageName = Telephony.Sms.getDefaultSmsPackage(context)

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

            startActivity(intent)
        }
        else -> startActivity(intent)
    }
}

Dies ist eine geänderte Antwort von @mustafasevgi

0
Nux