سلام خدمتش ما دوستان گرامی ، امیدوارم که حال همگی شما خوب باشه و خوش باشید با آموزش ارسال SMS در اندروید درخدمت شما هستم.
در راه زیر برای ارسال SMS با استفاده از دستگاه اندروید وجود دارد
استفاده از SMS Manager برای ارسال SMS
استفاده از Intent داخلی برای ارسال SMS
استفاده از SMS Manager برای ارسال SMS
SMS Manager عملکردهای Sms را از قبیل ارسال داده به دستگاه ارائه شده، کنترل می کند.
شما می توانید این آبجکت را از طریق فراخوانی روش استاتیک SmsManager.getDefault() ایجاد کنید، مانند زیر
SmsManager smsManager = SmsManager.getDefault();
زمانی که شما آبجکت Sms Manager را دارید می توانید از روش sendDataMessage() برای ارسال Sms به یک شماره موبایل مشخص شده استفاده کنید، مانند زیر
smsManager.sendTextMessage(“phoneNo”, null, “SMS text”, null, null);
علاوه بر روش بالا، عملکردهای مهم دیگری در گروه Sms Manager وجود دارند که لیست آنها را در زیر مشاهده می کنند .
ردیف
متد ها و توضیحات
۱
ArrayList divideMessage(String text)
این روش یک متن پیام را به چندین بخش تقسیم می کند، هیچ کدام بزرگتر ازاندازه ی بزرگترین پیام متنی نیستند.
۲
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)
یک متن چند بخشی SMS محور را ارسال می کند.
۵
void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
یک متن SMS محور را ارسال می کند.
مثال
این مثال به طور عملی به شما نشان می دهد چگونه با استفاده از آبجکت SmsManager یک sms به شماره موبایل ارائه شده ارسال کنید.
برای آزمایش با این مثال به یک دستگاه موبایل مجهز شده به آخرین ورژن Android OS نیاز خواهید داشت، در غیر این صورت مجبور خواهید بود با مقلدی کار کنید که ممکن است به درستی کار نکند.
مراحل
توضیحات
۱
برای ایجاد یک برنامه ی اندروید از Eclipse IDE استفاده خواهید کرد و آن را با عنوان SendSMSDemo تحت بسته ی com.example.sendsmsdemo نام گذاری کنید. زمان ایجاد این برنامه مطمئن شوید که Target SDK و Compile With در آخرین ورژن Android SDK هستند تا از سطوح بالاتر API استفاده کنید.
۲
فایل src/MainActivity.java را تغییر دهید و کد لازم برای مراقبت از ارسال ایمیل اضافه کنید.
۳
لی اوت فایل XML مربوط به res/layout/activity_main.xml را تغییر داده و اگر لازم است مولفه ی GUI را به آن اضافه کنید. برای گرفتن شماره موبایل و متن SMS ارسالی یک GUI ساده و یک دکمه برای ارسال SMS اضافه می کنم.
۴
res/values/strings.xml را تغییر دهید تا مقادیر ثابت لازم را تعریف کنید.
۵
AndroidManifest.xml را به شکلی که در زیر می بینید تغییر دهید.
۶
برنامه را اجرا کنید تا مقلد Android را آغاز کنید و نتیجه ی تغییرات انجام شده روی برنامه را بررسی کنید.
در زیر محتوای تغییر یافته ی فایل فعالیت اصلی را مشاهده می کنید.
src/com.example.sendsmsdemo/MainActivity.java.
package com.example.sendsmsdemo;
import android.os.Bundle;
import android.app.Activity;
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 {
Button sendBtn;
EditText txtphoneNo;
EditText txtMessage;
@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.editTextPhoneNo);
txtMessage = (EditText) findViewById(R.id.editTextSMS);
sendBtn.setOnClickListener(new View.OnClickListener() {
public void onClick(View view) {
sendSMSMessage();
}
});
}
protected void sendSMSMessage() {
Log.i(“Send SMS”, “”);
String phoneNo = txtphoneNo.getText().toString();
String message = txtMessage.getText().toString();
try {
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(getApplicationContext(), “SMS sent.”,
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(getApplicationContext(),
“SMS faild, please try again.”,
Toast.LENGTH_LONG).show();
e.printStackTrace();
}
}
@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 خواهد بود.
کد زیر محتوای فایل res/values/strings.xml برای تعریف دو ثابت جدید می باشد.
SendSMSDemo
Settings
Hello world!
Enter Phone Number:
Enter SMS Message:
Send SMS
در زیر محتوای پیش فرض AndroidManifest.xml را مشاهده می کنید.
اجازه بدهید برنامه ی SendSMSDemo شما را اجرا کنیم. فرض می کنیم که دستگاه موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز کرده و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما، Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندرویدتان، نمایش خواهد داد.
موبایل خود را به عنوان یک گزینه انتخاب کنید و سپس آن را چک کنید که صفحه ی زیر را نمایش خواهد داد.
اکنون می توانید شماره موبایل دلخواه خود را انتخاب کرده و یک پیام متنی به آن شماره ارسال کنید. در انتها برای ارسال پیام خود روی دکمه ی Send SMS کلیک کنید. مطمئن شوید که اتصال GSM شما خوب کار میکند تا پیامتان به گیرنده تحویل داده شود.
شما می توانید تعدادی SMS را که توسط کاما مجزا شده اند را بگیرید و سپس مجبور خواهید بود در برنامه ی خود آنها را به یک رشته array تجزیه کنید و در انتها می توانید از یک حلقه (loop) استفاده کنید تا پیام خود را به تمام شماره های داده شده ارسال کنید. و اینگونه است که شما می توانید کاربر SMS خود را بنویسید. بخش بعدی به شما نشان خواهد داد که چگونه از کاربر SMS درحال کار برای ارسال SMS استفاده کنید.
استفاده از Intent داخلی برای ارسال SMS
شما می توانید از Android Intent برای ارسال SMS با فرخوانی کارکردگرایی SMS داخلی اندروید استفاده کنید. بخش بعدی قسمت های مختلف Intent object لازم برای ارسال SMS را توضیح می دهد.
فعالیت Intent Object برای ارسال SMS
شما از فعالیت ACTION_VIEW برای آغاز یک کاربر SMS نصب شده روی دستگاه اندروید خود استفاده خواهید کرد. در زیر ترکیب ساده ی ایجاد یک Intent را با فعالیت ACTION_VIEW مشاهده می کنید.
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
Intent object_ نوع /داده برای ارسال SMS
برای ارسال یک SMS باید smsto: را مشخص کنید، همانطور که URI از روش setData() استفاده می کند و نوع داده برای vnd.android-dir/mms-sms با استفاده از روش setType() مانند زیر خواهد بود.
smsIntent.setData(Uri.parse(“smsto:”));
smsIntent.setType(“vnd.android-dir/mms-sms”);
Intent object_ افزوده برای ارسال SMS
اندروید دارای یک ساپورت داخلی برای افزودن شماره تلفن و پیام متنی برای ارسال SMS می باسد که مانند زیر است.
smsIntent.putExtra(“address” , new String(“0123456789;3393993300”));
smsIntent.putExtra(“sms_body” , “Test SMS to Angilla”);
در اینجا آدرس و بدنه ی sms دقیق بوده و فقط باید در کاراکترهای کوچک نوشته شوند. شما می توانید بیشتر از یک شماره را در رشته مشخص کنید و آنها را با علامت (;) یا سمی کولون مجزا کنید.
مثال
مثال زیر درعمل برای شما توضیح می دهد که چگونه از Intent object برای آغازکاربرsms در ارسال sms به شماره های داده شده، استفاده کنید. برای ا جرای این مثال به یک دستگاه موبایل مجهز شده به آخرین ورژن Android OS نیاز خواهید داشت، در غیر این صورت مجبور به استفاده ازمقلدی خواهید شد که ممکن است به خوبی کار نکند.
مراحل
توضیحات
۱
شما از Eclipse IDE برای ایجاد یک برنامه ی اندروید استفاده خواهید کرد و آن را با عنوان SendSMSDemo تحت پکیج com.example.sendsmsdemo نام گذاری خواهید کرد. در هنگام ایجاد این پروژه،مطمئن شوید که Target SDK و Compile With در آخرین ورژن از اندروید SDK هستند تا از سطوح بالاتر API استفاده کنید.
۲
فایل src/MainActivity.java را تغییر دهید و کد لازم برای مراقبت از ارسال sms را اضافه کنید.
۳
لی اوت فایل XML مربوط به res/layout/activity_main.xml را تغییر دهید و اگر لازم است مولفه ی GUI به آن اضافه کنید. من در حال افزودن یک دکمه ی ساده برای آغار SMS Client می باشم
۴
res/values/strings.xml را برای تعریف مقادیر ثابت لازم تغییر دهید.
۵
AndroidManifest.xml همانطور که در زیر نمایش داده شده، تغییر دهید.
۶
برنامه را اجرا کنید تا مقلد اندروید آغاز شود و نتیجه ی تغییرات انجام شده در برنامه را بررسی کنید.
در زیر محتوای تغییر یافته ی فایل فعالیت اصلی را مشاهده می کنید.
src/com.example.sendsmsdemo/MainActivity.java.
package com.example.sendsmsdemo;
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.sendSMS);
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 (“۰۱۲۳۴۵۶۷۸۹”));
smsIntent.putExtra(“sms_body” , “Test SMS to Angilla”);
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 خواهد بود.
در ادامه محتوای res/values/strings.xmlبرای تعریف دو ثابت جدید خواهد بود.
SendSMSDemo
Hello world!
Settings
Compose SMS
در ادامه محتوای پیش فرض فایل AndroidManifest.xml را مشاهده خواهید کرد.
اجازه بدهید برنامه ی SendSMSDemo را اجرا کنیم. فرض می کنیم که موبایل اندروید خود را به کامپیوتر متصل کرده اید. برای اجرای برنامه از Eclipse یکی از فایل های فعالیت پروژه ی خود را باز کنید و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما Eclipse پنجره ی زیر را برای انتخاب گزینه ی محل اجرای برنامه ی اندروید، نمایش خواهد داد.
موبایل خود را به عنوان یک گزینه انتخاب کنید و سپس آن را چک کنید که صفحه ی زیر را نمایش خواهد داد:
اکنون دکمه ی Compose SMS را برای آغاز کاربرهای داخلی SMS کلیک کنید که در زیر نمایش داده شده است.
شما می توانید هر کدام از فیلدهای پیش فرض ارائه شده را تغییر دهید و در انتها از دکمه ی send SMS (که با مثلث قرمز مشخص شده) استفاده کنید و sms خود را به گیرنده های ذکر شده ارسال کنید.