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.
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.
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
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
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
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"/>
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.
Ü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
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); */
}
}
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);
}
}
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