آموزش ارسال اس ام اس (پیامک) در
در اندروید شما می توانید از API مدیریت پیامک (SmsManager) استفاده کنید؛ همچنین می توانید از اپلیکیشن های داخلی SMS استفاده نمایید تا پیامک ها را ارسال کنید. در این آموزش؛ به شما دو مثال پایه ای نشان می دهیم تا ببینید که چگونه می توان پیامک را ارسال کرد.
SmsManager API
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(“phoneNo”, null, “sms message”, null, null);
اپلیکیشن داخلی SMS
Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra(“sms_body”, “default content”);
sendIntent.setType(“vnd.android-dir/mms-sms”);
startActivity(sendIntent);
البته؛ هر دوی اینها به اجازه ی SEND_SMS نیاز دارند.
جدا از متد بالا، تعداد کمی توابع مهم دیگر در کلاس SmsManager وجود دارد. این متدها در زیر فهرست شده اند:
ردیف | متد و توضیح آن |
۱ |
ArrayListdivideMessage(String text) این متد یک پیام متنی را به چندین بخش تقسیم می کند، که بزرگتر از ماکزیمم اندازه پیام SMS نباشد. |
۲ |
Static SmsManager getDefault() این متد برای دریافت نمونه ی پیش فرض SmsManager به کار رفته است. |
۳ |
Void sendDataMessage(String destinationAddress,String scAddress,short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent) این متد برای ارسال یک داده بر اساس SMS به درگاه خاص اپلیکیشن به کار رفته است. |
۴ |
void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList parts, ArrayList sentIntents, ArrayList deliveryIntents) ارسال یک متن چند بخشی با پیامک |
۵ |
void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent) ارسال یک پیام با پیامک |
مثال
مثال زیر به شما نشان می دهد که شما چگونه به صورت عملی می توانید از شیء SmsManager برای ارسال یک SMS به شماره موبایل داده شده؛ استفاده نمایید.
برای آزمایش این مثال، شما به یک دستگاه موبایل حقیقی نیاز دارید که باید با آخرین نسخه سیستم عامل اندروید تجهیز شده باشد. در غیر این صورت؛ احتمالاً با شبیه ساز درگیر می شوید زیرا ممکن است به درستی کار نکند.
مرحله | توضیح |
۱ | شما برای ایجاد یک اپلیکیشن اندروید از استودیو اندرویدIDE استفاده می کنید و آن را تحت بسته ی com.example.tutorialspoint به عنوان Tutorialspoint نام گذاری کنید. |
۲ | اصلاح فایل src/mainActivity.java و اضافه کردن کد مورد نیاز برای مراقبت از ارسال sms |
۳ | اصلاح فایل XML صفحه بندی res/layout/activity_main.xml هر مؤلفه GUI مورد نیاز را اضافه می کند. من یک GUI ساده اضافه می کنم تا شماره موبایل را گرفته و متن SMS ارسال کند؛ یک دکمه ساده برای ارسال پیام قرار داده می شود. |
۴ | نیازی به تعریف ثابت های رشته ای پیشفرض در res/values/strings.xml نیست. استودیو اندروید از ثابت های پیشفرض مراقبت می کند . |
۵ | اصلاح AndroidManifest.xml به صورتی که در زیر نشان داده شده است. |
۶ | اجرای اپلیکیشن برای راه اندازی شبیه ساز اندروید و تأیید این امر که نتیجه تغییرات در اپلیکیشن انجام شده است. |
در ادامه می توانید محتوای فایل activity اصلی اصلاح شده 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;
}
}
}
}
}
در بخش بعدی می توانید محتوای فایل res/layout/activity_main.xml را مشاهده کنید:
در این قسمت abc نشان دهنده لوگوی tutorialspoint می باشد:
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”>
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” />
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” />
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” />
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” />
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” />
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” />
در بخش بعدی محتوای res/values/strings.xml برای تعریف دو ثابت جدید را مشاهده می کنید:
tutorialspoint
کد زیر محتوای پیشفرض AndroidManifest.xml را نشان می دهد.
package=”com.example.tutorialspoint” >
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
android:name=”com.example.tutorialspoint.MainActivity”
android:label=”@string/app_name” >
بیایید اجرای برنامه tutorialspoint شما را امتحان کنیم. فرض می کنیم که شما دستگاه موبایل واقعی تان را به کامپیوترتان وصل کرده اید. برای اجرای برنامه از استودیو اندروید؛ یکی از فایلهای activity پروژه تان را باز کنید و روی آیکون اجرا کلیک کنید که در قسمت نوار ابزار قرار دارد. قبل از آغاز اپلیکیشن شما؛ نصب کننده استودیو اندروید پنجره زیر را نشان می دهد که در آن می توانید گزینه ای را انتخاب کنید که می خواهید اپلیکیشن شما در آن اجرا شود.
اکنون می توانید شماره موبایل دلخواه تان را وارد کنید و نیز متن پیامی را که می خواهید به آن شماره ارسال کنید؛ تایپ نمایید. در نهایت بر روی دکمه Send SMS کلیک کنید تا پیام شما ارسال شود. اطمینان حاصل کنید که اتصال GSM/CDMA شما به خوبی کار می کند تا پیام شما به گیرنده تحویل شود.
شما می توانید تعدادی پیام کوتاه را که با کاما از هم جدا شده اند بگیرید و سپس در داخل برنامه خود قرار دهید، باید آنها را در یک رشته آرایه قرار دهید و در آخر می توانید از یک حلقه برای ارسال پیام به تمام شماره های داده شده استفاده کنید. به این ترتیب می توانید مشتری پیام کوتاه خود را بنویسید. در بخش بعدی نحوه استفاده از سرویس ارسال پیام کوتاه موجود برای ارسال پیام کوتاه به شما نشان داده خواهد شد.
استفاده از Intent داخلی برای ارسال SMS
شما می توانید با فراخوانی عملکرد پیامک داخلی اندروید، از اینتنت اندروید برای ارسال پیامک استفاده کنید. بخش بعدی، قسمت های مختلف شیء Intent مورد نظر برای ارسال یک پیامک را توضیح می دهد.
عملیات-شیء Intent برای ارسال پیامک
شما از ACTION_VIEW برای راه اندازی یک سرویس راه اندازی ارسال پیامک استفاده خواهید کرد که روی دستگاه اندروید شما نصب شده است. سینتکس ساده زیر با استفاده از ACTION_VIEW یک Intent ایجاد می کند.
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
نوع/داده – شیء Intent برای ارسال پیامک
برای ارسال یک پیامک؛ شما باید smsto را با استفاده از متد ()setData به عنوان URI مشخص کنید و نوع داده با استفاده از متد ()setType به شکل زیر؛ vnd.android-dir/mms-sms خواهد بود:
smsIntent.setData(Uri.parse(“smsto:”));
smsIntent.setType(“vnd.android-dir/mms-sms”);
شیء Intent- اضافی برای ارسال پیامک
اندروید یک پشتیبانی داخلی دارد که می توان مانند زیر، شماره تلفن و متن پیام را برای ارسال پیامک وارد کنید:
smsIntent.putExtra(“address” , new String(“0123456789;3393993300”));
smsIntent.putExtra(“sms_body” , “Test SMS to Angilla”);
در اینجا آدرس و sms_body موارد حساس هستند و فقط باید با حروف کوچک مشخص شوند. شما می توانید بیش از یک عدد را به صورت تک رشته ای مشخص کنید اما باید آنها را با سمیکالون از هم جدا کنید.
مثال
مثال زیر به صورت عملی به شما نشان می دهد که چگونه با استفاده از شیء اینتنت می توانید سرویس ارسال پیامک را راه اندازی کرده و یک پیامک را به شماره گیرنده داده شده ارسال نمایید.
برای آزمایش کردن این مثال، شما به یک دستگاه موبایل حقیقی نیاز دارید که به آخرین نسخه سیستم عامل اندروید تجهیز شده باشد؛ در غیر این صورت احتمالاً با شبیه ساز درگیر می شوید؛ زیرا ممکن است درست کار نکند.
مرحله | توضیح |
۱ | شما برای ایجاد یک اپلیکیشن اندروید از استودیو اندرویدIDE استفاده می کنید و آن را تحت بسته ی com.example.tutorialspoint به عنوان Tutorialspoint نام گذاری کنید. |
۲ | اصلاح فایل src/mainActivity.java و اضافه کردن کد مورد نیاز برای مراقبت از ارسال sms |
۳ | اصلاح فایل XML صفحه بندی res/layout/activity_main.xml هر مؤلفه GUI مورد نیاز را اضافه می کند. من دکمه ساده برای راه اندازی سرویس ارسال sms اضافه کرده ام. |
۴ | نیازی به تعریف ثابت های رشته ای پیشفرض نیست. استودیو اندروید از ثابت های پیشفرض مراقبت می کند . |
۵ | اصلاح AndroidManifest.xml به صورتی که در زیر نشان داده شده است. |
۶ | اجرای اپلیکیشن برای راه اندازی شبیه ساز اندروید و تأیید این امر که نتیجه تغییرات در اپلیکیشن انجام شده است. |
در ادامه محتوای فایل activity اصلی اصلاح شده src/com.example.tutorialspoin/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;
}
}
در ادامه محتوای فایل res/layout/activity_main.xml را مشاهده می کنید:
در این قسمت abc مربوط به لوگوی tutorialspoint می باشد.
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”>
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” />
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” />
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” />
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” />
در ادامه می توانید محتوای res/values/strings.xml برای تعریف دو ثابت جدید را مشاهده کنید:
tutorialspoint
در ادامه می توانید محتوای پیشفرض AndroidManifest.xml را مشاهده کنید:
package=”com.example.tutorialspoint” >
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher”
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
android:name=”com.example.tutorialspoint.MainActivity”
android:label=”@string/app_name” >
بیایید اجرای اپلیکیشن tutorialspoint شمارا امتحان کنیم. فرض می کنیم که شما دستگاه موبایل اندروید واقعی تان را به کامپیوتر خود متصل کرده اید. برای اجرای اپلیکیشن از استودیو اندروید، یکی از فایل های activity پروژه خودتان را باز کنید و روی آیکون اجرا کلیک کنید که در قسمت نوار ابزار قرار گرفته است. قبل از این که اپلیکیشن شما آغاز شود؛ استودیو اندروید پنجره زیر را نمایش می دهد تا گزینه ای را انتخاب کنید که در آن شما می خواهید اپلیکیشن خود را اجرا کنید.
دستگاه موبایل خود را به عنوان یک گزینه انتخاب کنید؛ سپس اگر دستگاه موبایل خود را بررسی کنید؛ خواهید دید که تصویر زیر به نمایش در می آید:
اکنون با به کار گرفتن دکمه Compose SMS، سرویس های ارسال پیامک داخلی را راه اندازی می کنید که در زیر نشان داده شده است:
شما می توانید هر یک از فیلدهای پیشفرض داده شده را اصلاح کنید و سپس در نهایت از دکمه ارسال SMS استفاده می کنید تا پیام خود را به گیرنده ذکر شده ارسال نمایید.