Zeigen Sie die Ansicht zum Verfassen von SMS in Android an

Lesezeit: 8 Minuten

Zeigen Sie die Ansicht zum Verfassen von SMS in Android
djk

Ich möchte eine SMS mit Android senden.

Was ist die Absicht für den SMS-Versand?

Ich möchte die Ansicht zum Verfassen von SMS mit meinem vordefinierten Text anzeigen, der in das Nachrichtenfeld übergeht.

  • Du solltest lesen dieser Artikel für die ganze Geschichte.

    – Nguyen Minh Binh

    18. Juli 2011 um 15:58 Uhr

  • Ich mache etwas ähnliches HIER!!! stackoverflow.com/questions/14452808/…

    – Etienne Lawlor

    22. Januar 2013 um 7:55 Uhr

  • @toobsco42: Nein, du machst genau das Gegenteil. Sie senden eine SMS du selbst und diese Frage fordert über Standard-SMS-Anwendung.

    – Jan Hudec

    21. Juni 2013 um 12:47 Uhr


  • Möglicherweise unterstützen Sie auch Dual-Sim-Geräte, siehe hier: stackoverflow.com/a/30677542/2267723

    – Maher Abuthraa

    8. November 2016 um 15:25 Uhr

  • Dieser Artikel erklärt SMS/MMS auf Android einfach und bietet ein einfaches Codebeispiel für das Senden von SMS und das Empfangen von SMS: codeproject.com/Articles/1044639/…

    – Rou1997

    7. April 2017 um 14:27 Uhr

1646344393 563 Zeigen Sie die Ansicht zum Verfassen von SMS in Android
Anzeigen

Sie können den folgenden Code verwenden:

startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("sms:"
                        + phoneNumber)));

Stellen Sie sicher, dass Sie eingestellt sind phoneNumber an die Telefonnummer, an die Sie die Nachricht senden möchten

Sie können der SMS eine Nachricht hinzufügen mit (aus Kommentaren):

Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("sms:" + phoneNumber));     
intent.putExtra("sms_body", message); 
startActivity(intent);

  • danke für deinen Code. und ich möchte hinzufügen, da ich meinen vordefinierten text einfügen muss. Ich habe diese Lösung Intent Intent = new Intent( Intent.ACTION_VIEW, Uri.parse( “sms:” + phoneNumber ) ); intention.putExtra( “sms_body”, Nachricht ); startActivity( Absicht);

    – DJ

    11. Februar 2011 um 10:39 Uhr


  • Wie setze ich “Telefonnummer” aus der Kontaktliste?

    – Said M.

    25. September 2012 um 11:25 Uhr


  • @djk danke, ich möchte alle Kontakte lesen und möchte eine eigene Seite zum Senden von SMS mit automatischer Vervollständigung, aber ich kann keine Kontakte lesen. Gibt es ein gutes Tutorial?

    – Guru

    1. Oktober 2012 um 12:59 Uhr

  • Ich würde dafür das Standard-Widget zum Verfassen von SMS verwenden. Lassen Sie die Telefonnummer einfach leer (es ist optional)

    – sie

    11. März 2013 um 16:31 Uhr

  • Hallo. Ich möchte Massen-SMS versenden. wie 10.000 SMS mit einem Klick versenden. Ist es möglich ? Ich habe gehört, dass Android alle 30 Minuten 30 SMS sendet. bitte hilf mir

    – Vrajesch

    25. September 2016 um 16:25 Uhr

Zeigen Sie die Ansicht zum Verfassen von SMS in Android
selva_pollachi

Das hat bei mir funktioniert.

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);
    Button btnSendSMS = (Button) findViewById(R.id.btnSendSMS);
    btnSendSMS.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
            sendSMS("5556", "Hi You got a message!");
           /*here i can send message to emulator 5556. In Real device 
            *you can change number*/
        }
    });
}

//Sends an SMS message to another device

private void sendSMS(String phoneNumber, String message) {
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, null, null);
}

Sie können diese Zeile in AndroidManifest.xml hinzufügen

<uses-permission android:name="android.permission.SEND_SMS"/>

Schauen Sie sich an Das

Dies kann für Sie hilfreich sein.

  • Die Frage fordert Sie auf, die SMS in der Standardansicht zum Verfassen anzuzeigen. Das ist das genaue Gegenteil, das Versenden von SMS hinter dem Rücken des Benutzers, oder?

    – Jan Hudec

    14. Juni 2013 um 12:41 Uhr

  • Es kann keine Nachricht senden, wenn ein Apostroph darin enthalten ist.

    – Berserker

    12. Mai 2015 um 12:11 Uhr

Zeigen Sie die Ansicht zum Verfassen von SMS in Android
Senthil Mg

Probieren Sie den folgenden Code aus und rufen Sie dann an, sendSMS("99999999999", "message"); SMS an die gewünschte Nummer senden.

//---sends an SMS message to another device---
@SuppressWarnings("deprecation")
private void sendSMS(String phoneNumber, String message)
{        
    Log.v("phoneNumber",phoneNumber);
    Log.v("MEssage",message);
    PendingIntent pi = PendingIntent.getActivity(this, 0,
    new Intent(this, **DummyClasshere.class**), 0);                
    SmsManager sms = SmsManager.getDefault();
    sms.sendTextMessage(phoneNumber, null, message, pi, null);        
}

Bitte platzieren Sie die folgende Erlaubnis in AndroidManifest.xml Datei.

<uses-permission android:name="android.permission.SEND_SMS"/>

Hoffe das könnte helfen.

Aktualisieren
Aus dem Kommentar: DummyClasshere.class ist eine Aktivität ohne Prozess oder die Klasse, in der Sie navigieren müssen.

Sie können Object.class anstelle von DummyClasshere.class verwenden.

  • etwas eine Aktivität ohne einen Prozess zu machen. oder sonst die Klasse, in der Sie navigieren müssen.

    – Senthil Mg

    25. Februar 2011 um 11:48 Uhr


  • Ich benutze nur new Intent() und das tut es.

    – Osmium USA

    13. Juni 2013 um 17:34 Uhr

  • Woher wissen Sie, ob eine Nachricht (SMS) gesendet wurde?

    – Ninja-Codierung

    19. Oktober 2016 um 17:15 Uhr

1646344395 195 Zeigen Sie die Ansicht zum Verfassen von SMS in Android
Ashish Dwivedi

Dies wird definitiv funktionieren. Senden Sie in diesem Fall eine Nachricht, ohne eine Absicht zu verwenden.

SmsManager smsManager =     SmsManager.getDefault();
smsManager.sendTextMessage("Phone Number", null, "Message", null, null);

Dieser Code wird verwendet für Nachricht im Hintergrund senden (Nachrichtenersteller wird nicht angezeigt)Es kann auch innerhalb des arbeiten Rundfunkempfänger. Wenn Sie eine Nachricht vom Broadcast-Empfänger senden möchten.

   <uses-permission android:name="android.permission.SEND_SMS"/>

1646344396 643 Zeigen Sie die Ansicht zum Verfassen von SMS in Android
chiranjib

In Android haben wir die Klasse SMSManager die SMS-Operationen wie das Senden von Daten, Text und pdu-SMS-Nachrichten verwaltet. Rufen Sie dieses Objekt ab, indem Sie die statische Methode SmsManager.getDefault() aufrufen.

SMSManager Javadoc

Überprüfen Sie den folgenden Link, um den Beispielcode zum Senden von SMS zu erhalten:

Artikel zum Senden und Empfangen von SMS-Nachrichten in Android

1646344397 873 Zeigen Sie die Ansicht zum Verfassen von SMS in Android
Maxzerstörer

Hoffe dieser Code hilft dir weiter 🙂

public class MainActivity extends Activity {
    private int mMessageSentParts;
    private int mMessageSentTotalParts;
    private int mMessageSentCount;
     String SENT = "SMS_SENT";
     String DELIVERED = "SMS_DELIVERED";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button=(Button)findViewById(R.id.button1);
        button.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                String phoneNumber = "0000000000";
                String message = "Hello World!";
                sendSMS(phoneNumber,message);


            }
        });



    }


    public void sendSMS(String phoneNumber,String message) {
        SmsManager smsManager = SmsManager.getDefault();


         String SENT = "SMS_SENT";
            String DELIVERED = "SMS_DELIVERED";

            SmsManager sms = SmsManager.getDefault();
            ArrayList<String> parts = sms.divideMessage(message);
            int messageCount = parts.size();

            Log.i("Message Count", "Message Count: " + messageCount);

            ArrayList<PendingIntent> deliveryIntents = new ArrayList<PendingIntent>();
            ArrayList<PendingIntent> sentIntents = new ArrayList<PendingIntent>();

            PendingIntent sentPI = PendingIntent.getBroadcast(this, 0, new Intent(SENT), 0);
            PendingIntent deliveredPI = PendingIntent.getBroadcast(this, 0, new Intent(DELIVERED), 0);

            for (int j = 0; j < messageCount; j++) {
                sentIntents.add(sentPI);
                deliveryIntents.add(deliveredPI);
            }

            // ---when the SMS has been sent---
            registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context arg0, Intent arg1) {
                    switch (getResultCode()) {
                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS sent",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_GENERIC_FAILURE:
                        Toast.makeText(getBaseContext(), "Generic failure",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NO_SERVICE:
                        Toast.makeText(getBaseContext(), "No service",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_NULL_PDU:
                        Toast.makeText(getBaseContext(), "Null PDU",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case SmsManager.RESULT_ERROR_RADIO_OFF:
                        Toast.makeText(getBaseContext(), "Radio off",
                                Toast.LENGTH_SHORT).show();
                        break;
                    }
                }
            }, new IntentFilter(SENT));

            // ---when the SMS has been delivered---
            registerReceiver(new BroadcastReceiver() {
                @Override
                public void onReceive(Context arg0, Intent arg1) {
                    switch (getResultCode()) {

                    case Activity.RESULT_OK:
                        Toast.makeText(getBaseContext(), "SMS delivered",
                                Toast.LENGTH_SHORT).show();
                        break;
                    case Activity.RESULT_CANCELED:
                        Toast.makeText(getBaseContext(), "SMS not delivered",
                                Toast.LENGTH_SHORT).show();
                        break;
                    }
                }
            }, new IntentFilter(DELIVERED));
  smsManager.sendTextMessage(phoneNumber, null, message, sentPI, deliveredPI);
           /* sms.sendMultipartTextMessage(phoneNumber, null, parts, sentIntents, deliveryIntents); */
    }
}

1646344398 717 Zeigen Sie die Ansicht zum Verfassen von SMS in Android
Gemeinschaft

Ich füge meine SMS-Methode hinzu, wenn sie jemandem helfen kann. Seien Sie vorsichtig mit smsManager.sendTextMessage. Wenn der Text zu lang ist, verschwindet die Nachricht nicht. Sie müssen die maximale Länge je nach Kodierung beachten. Weitere Informationen hier SMS-Manager sendet mehrteilige Nachrichten, wenn weniger als 160 Zeichen vorhanden sind

// ÜBERALL VERWENDEN

SMSUtils.sendSMS(context, phoneNumber, message);

//Manifest

<!-- SMS -->
<uses-permission android:name="android.permission.SEND_SMS"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

 <receiver
     android:name=".SMSUtils"
     android:enabled="true"
     android:exported="true">
     <intent-filter>
         <action android:name="SMS_SENT"/>
         <action android:name="SMS_DELIVERED"/>
      </intent-filter>
 </receiver>

//JAVA

public class SMSUtils extends BroadcastReceiver {

    public static final String SENT_SMS_ACTION_NAME = "SMS_SENT";
    public static final String DELIVERED_SMS_ACTION_NAME = "SMS_DELIVERED";

    @Override
    public void onReceive(Context context, Intent intent) {
        //Detect l'envoie de sms
        if (intent.getAction().equals(SENT_SMS_ACTION_NAME)) {
            switch (getResultCode()) {
                case Activity.RESULT_OK: // Sms sent
                    Toast.makeText(context, context.getString(R.string.sms_send), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_GENERIC_FAILURE: // generic failure
                    Toast.makeText(context, context.getString(R.string.sms_not_send), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_NO_SERVICE: // No service
                    Toast.makeText(context, context.getString(R.string.sms_not_send_no_service), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_NULL_PDU: // null pdu
                    Toast.makeText(context, context.getString(R.string.sms_not_send), Toast.LENGTH_LONG).show();
                    break;
                case SmsManager.RESULT_ERROR_RADIO_OFF: //Radio off
                    Toast.makeText(context, context.getString(R.string.sms_not_send_no_radio), Toast.LENGTH_LONG).show();
                    break;
            }
        }
        //detect la reception d'un sms
        else if (intent.getAction().equals(DELIVERED_SMS_ACTION_NAME)) {
            switch (getResultCode()) {
                case Activity.RESULT_OK:
                    Toast.makeText(context, context.getString(R.string.sms_receive), Toast.LENGTH_LONG).show();
                    break;
                case Activity.RESULT_CANCELED:
                    Toast.makeText(context, context.getString(R.string.sms_not_receive), Toast.LENGTH_LONG).show();
                    break;
            }
        }
    }

    /**
     * Test if device can send SMS
     * @param context
     * @return
     */
    public static boolean canSendSMS(Context context) {
        return context.getPackageManager().hasSystemFeature(PackageManager.FEATURE_TELEPHONY);
    }

    public static void sendSMS(final Context context, String phoneNumber, String message) {

        if (!canSendSMS(context)) {
            Toast.makeText(context, context.getString(R.string.cannot_send_sms), Toast.LENGTH_LONG).show();
            return;
        }

        PendingIntent sentPI = PendingIntent.getBroadcast(context, 0, new Intent(SENT_SMS_ACTION_NAME), 0);
        PendingIntent deliveredPI = PendingIntent.getBroadcast(context, 0, new Intent(DELIVERED_SMS_ACTION_NAME), 0);

        final SMSUtils smsUtils = new SMSUtils();
        //register for sending and delivery
        context.registerReceiver(smsUtils, new IntentFilter(SMSUtils.SENT_SMS_ACTION_NAME));
        context.registerReceiver(smsUtils, new IntentFilter(DELIVERED_SMS_ACTION_NAME));

        SmsManager sms = SmsManager.getDefault();
        ArrayList<String> parts = sms.divideMessage(message);

        ArrayList<PendingIntent> sendList = new ArrayList<>();
        sendList.add(sentPI);

        ArrayList<PendingIntent> deliverList = new ArrayList<>();
        deliverList.add(deliveredPI);

        sms.sendMultipartTextMessage(phoneNumber, null, parts, sendList, deliverList);

        //we unsubscribed in 10 seconds 
        new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                context.unregisterReceiver(smsUtils);
            }
        }, 10000);

    }
}

927840cookie-checkZeigen Sie die Ansicht zum Verfassen von SMS in Android an

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy