Android - Mengirim SMS
Di Android, Anda dapat menggunakan SmsManager API atau perangkat aplikasi SMS Built-in untuk mengirim SMS. Dalam tutorial ini, kami menunjukkan dua contoh dasar untuk mengirim pesan SMS -
SmsManager API
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);
Built-in SMS application
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content");
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);
Tentu saja keduanya membutuhkan SEND_SMS permission.
<uses-permission android:name="android.permission.SEND_SMS" />
Selain metode di atas, ada beberapa fungsi penting lainnya yang tersedia di kelas SmsManager. Metode ini tercantum di bawah -
Sr.No. | Metode & Deskripsi |
---|---|
1 | ArrayList<String> divideMessage(String text) Metode ini membagi teks pesan menjadi beberapa fragmen, tidak lebih besar dari ukuran maksimum pesan SMS. |
2 | static SmsManager getDefault() Metode ini digunakan untuk mendapatkan instance default dari SmsManager |
3 | void sendDataMessage(String destinationAddress, String scAddress, short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) Metode ini digunakan untuk mengirim SMS berbasis data ke port aplikasi tertentu. |
4 | void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents) Kirim SMS berbasis teks multi-bagian. |
5 | void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) Kirim SMS berbasis teks. |
Contoh
Contoh berikut menunjukkan kepada Anda secara praktis cara menggunakan objek SmsManager untuk mengirim SMS ke nomor ponsel yang diberikan.
Untuk bereksperimen dengan contoh ini, Anda memerlukan perangkat Seluler yang dilengkapi dengan OS Android terbaru, jika tidak, Anda harus berjuang dengan emulator yang mungkin tidak berfungsi.
Langkah | Deskripsi |
---|---|
1 | Anda akan menggunakan Android Studio IDE untuk membuat aplikasi Android dan menamakannya tutorialspoint di bawah paket com.example.tutorialspoint . |
2 | Ubah file src / MainActivity.java dan tambahkan kode yang diperlukan untuk menangani pengiriman sms. |
3 | Ubah layout file XML res / layout / activity_main.xml tambahkan komponen GUI apa pun jika diperlukan. Saya menambahkan GUI sederhana untuk mengambil nomor ponsel dan teks SMS yang akan dikirim dan tombol sederhana untuk mengirim SMS. |
4 | Tidak perlu mendefinisikan konstanta string default di res / values / strings.xml. Android studio menangani konstanta default. |
5 | Ubah AndroidManifest.xml seperti yang ditunjukkan di bawah ini |
6 | Jalankan aplikasi untuk meluncurkan emulator Android dan verifikasi hasil perubahan yang dilakukan dalam aplikasi. |
Berikut adalah konten file aktivitas utama yang dimodifikasi src/com.example.tutorialspoint/MainActivity.java.
package com.example.tutorialspoint;
import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.app.Activity;
import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
import android.telephony.SmsManager;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity {
private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
Button sendBtn;
EditText txtphoneNo;
EditText txtMessage;
String phoneNo;
String message;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sendBtn = (Button) findViewById(R.id.btnSendSMS);
txtphoneNo = (EditText) findViewById(R.id.editText);
txtMessage = (EditText) findViewById(R.id.editText2);
sendBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMSMessage();
}
});
}
protected void sendSMSMessage() {
phoneNo = txtphoneNo.getText().toString();
message = txtMessage.getText().toString();
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.SEND_SMS)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.SEND_SMS)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.SEND_SMS},
MY_PERMISSIONS_REQUEST_SEND_SMS);
}
}
}
@Override
public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_SEND_SMS: {
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), "SMS sent.",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"SMS faild, please try again.", Toast.LENGTH_LONG).show();
return;
}
}
}
}
}
Berikut akan menjadi konten res/layout/activity_main.xml file -
Berikut abc menunjukkan tentang logo tutorialspoint
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context="MainActivity">
<TextView
android:id="@+id/textView1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Sending SMS Example"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:id="@+id/textView2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials point "
android:textColor="#ff87ff09"
android:textSize="30dp"
android:layout_below="@+id/textView1"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton" />
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton"
android:src="@drawable/abc"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText"
android:hint="Enter Phone Number"
android:phoneNumber="true"
android:textColorHint="@color/abc_primary_text_material_dark"
android:layout_below="@+id/imageButton"
android:layout_centerHorizontal="true" />
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/editText2"
android:layout_below="@+id/editText"
android:layout_alignLeft="@+id/editText"
android:layout_alignStart="@+id/editText"
android:textColorHint="@color/abc_primary_text_material_dark"
android:layout_alignRight="@+id/imageButton"
android:layout_alignEnd="@+id/imageButton"
android:hint="Enter SMS" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Send Sms"
android:id="@+id/btnSendSMS"
android:layout_below="@+id/editText2"
android:layout_centerHorizontal="true"
android:layout_marginTop="48dp" />
</RelativeLayout>
Berikut akan menjadi konten res/values/strings.xml untuk mendefinisikan dua konstanta baru -
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tutorialspoint</string>
</resources>
Berikut ini adalah konten default dari AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint" >
<uses-permission android:name="android.permission.SEND_SMS" />
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.tutorialspoint.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Ayo coba jalankan file tutorialspointaplikasi. Saya berasumsi bahwa Anda telah menghubungkan perangkat Seluler Android Anda yang sebenarnya dengan komputer Anda. Untuk menjalankan aplikasi dari Android studio, buka salah satu file aktivitas proyek Anda dan klik
Sekarang Anda dapat memasukkan nomor ponsel yang diinginkan dan pesan teks yang akan dikirim ke nomor itu. Terakhir klikSend SMStombol untuk mengirim SMS Anda. Pastikan koneksi GSM / CDMA Anda berfungsi dengan baik untuk mengirimkan SMS Anda ke penerima.
Anda dapat mengambil sejumlah SMS yang dipisahkan dengan koma dan kemudian di dalam program Anda, Anda harus menguraikannya menjadi string array dan akhirnya Anda dapat menggunakan loop untuk mengirim pesan ke semua nomor yang diberikan. Begitulah cara Anda menulis klien SMS Anda sendiri. Bagian selanjutnya akan menunjukkan kepada Anda bagaimana menggunakan klien SMS yang ada untuk mengirim SMS.
Menggunakan Maksud Built-in untuk mengirim SMS
Anda dapat menggunakan Android Intent untuk mengirim SMS dengan memanggil fungsionalitas SMS bawaan Android. Bagian berikut menjelaskan berbagai bagian dari objek Intent yang diperlukan untuk mengirim SMS.
Objek Maksud - Tindakan untuk mengirim SMS
Anda akan menggunakan ACTION_VIEWtindakan untuk meluncurkan klien SMS yang diinstal pada perangkat Android Anda. Berikut ini adalah sintaks sederhana untuk membuat maksud dengan tindakan ACTION_VIEW.
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
Objek Maksud - Data / Jenis untuk mengirim SMS
Untuk mengirim SMS, Anda perlu menentukan smsto: sebagai URI menggunakan metode setData () dan tipe datanya akan vnd.android-dir/mms-sms menggunakan metode setType () sebagai berikut -
smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");
Objek Maksud - Ekstra untuk mengirim SMS
Android memiliki dukungan bawaan untuk menambahkan nomor telepon dan pesan teks untuk mengirim SMS sebagai berikut -
smsIntent.putExtra("address" , new String("0123456789;3393993300"));
smsIntent.putExtra("sms_body" , "Test SMS to Angilla");
Di sini alamat dan sms_body peka huruf besar / kecil dan harus ditentukan dalam karakter kecil saja. Anda dapat menentukan lebih dari satu angka dalam string tunggal tetapi dipisahkan dengan titik koma (;).
Contoh
Contoh berikut menunjukkan kepada Anda secara praktis cara menggunakan objek Intent untuk meluncurkan klien SMS untuk mengirim SMS ke penerima yang diberikan.
Untuk bereksperimen dengan contoh ini, Anda memerlukan perangkat Seluler yang dilengkapi dengan OS Android terbaru, jika tidak, Anda harus berjuang dengan emulator yang mungkin tidak berfungsi.
Langkah | Deskripsi |
---|---|
1 | Anda akan menggunakan IDE studio Android untuk membuat aplikasi Android dan menamakannya tutorialspoint di bawah paket com.example.tutorialspoint . |
2 | Ubah file src / MainActivity.java dan tambahkan kode yang diperlukan untuk menangani pengiriman SMS. |
3 | Ubah layout file XML res / layout / activity_main.xml tambahkan komponen GUI apa pun jika diperlukan. Saya menambahkan tombol sederhana untuk meluncurkan Klien SMS. |
4 | Tidak perlu menentukan konstanta default. Android studio menangani konstanta default. |
5 | Ubah AndroidManifest.xml seperti yang ditunjukkan di bawah ini |
6 | Jalankan aplikasi untuk meluncurkan emulator Android dan verifikasi hasil perubahan yang dilakukan dalam aplikasi. |
Berikut adalah konten file aktivitas utama yang dimodifikasi src/com.example.tutorialspoint/MainActivity.java.
package com.example.tutorialspoint;
import android.net.Uri;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.Toast;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button startBtn = (Button) findViewById(R.id.button);
startBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMS();
}
});
}
protected void sendSMS() {
Log.i("Send SMS", "");
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");
smsIntent.putExtra("address" , new String ("01234"));
smsIntent.putExtra("sms_body" , "Test ");
try {
startActivity(smsIntent);
finish();
Log.i("Finished sending SMS...", "");
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(MainActivity.this,
"SMS faild, please try again later.", Toast.LENGTH_SHORT).show();
}
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
Berikut akan menjadi konten res/layout/activity_main.xml file -
Berikut abc menunjukkan tentang logo tutorialspoint
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
android:paddingBottom="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Drag and Drop Example"
android:id="@+id/textView"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:textSize="30dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Tutorials Point "
android:id="@+id/textView2"
android:layout_below="@+id/textView"
android:layout_centerHorizontal="true"
android:textSize="30dp"
android:textColor="#ff14be3c" />
<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageView"
android:src="@drawable/abc"
android:layout_marginTop="48dp"
android:layout_below="@+id/textView2"
android:layout_centerHorizontal="true" />
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Compose SMS"
android:id="@+id/button"
android:layout_below="@+id/imageView"
android:layout_alignRight="@+id/textView2"
android:layout_alignEnd="@+id/textView2"
android:layout_marginTop="54dp"
android:layout_alignLeft="@+id/imageView"
android:layout_alignStart="@+id/imageView" />
</RelativeLayout>
Berikut akan menjadi konten res/values/strings.xml untuk mendefinisikan dua konstanta baru -
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tutorialspoint</string>
</resources>
Berikut ini adalah konten default dari AndroidManifest.xml -
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.tutorialspoint" >
<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.tutorialspoint.MainActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>
Ayo coba jalankan file tutorialspointaplikasi. Saya berasumsi bahwa Anda telah menghubungkan perangkat Seluler Android Anda yang sebenarnya dengan komputer Anda. Untuk menjalankan aplikasi dari Android studio, buka salah satu file aktivitas proyek Anda dan klik
Pilih perangkat seluler Anda sebagai opsi dan kemudian periksa perangkat seluler Anda yang akan menampilkan layar berikut -
Sekarang gunakan Compose SMS tombol untuk meluncurkan klien SMS bawaan Android yang ditunjukkan di bawah -
Anda dapat mengubah salah satu bidang default yang diberikan dan terakhir menggunakan tombol kirim SMS untuk mengirim SMS Anda ke penerima yang disebutkan.