در این مقاله از اینتنت ها برای ارسال اس ام اس استفاده می کنیم.
در اندروید ، شما میتواندی از رابط کاربری SmsManager و یا از نرم افزار SMS application برای ارسال اس ام اس استفاده کنید. در این آموزش ، ما دو مثال ساده از ارسال پیام اس ام اسی نشان خواهیم داد.
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);
هردو به اجازه ارسال ایمیل SEND_SMS permission نیاز دارند :
<uses-permission android:name="android.permission.SEND_SMS" />
در کلاس SmsManager ، متدهای که در جدول زیر نامبرده شده اند نیز قابل استفاده میباشند.
شماره
|
متد و توضیحات
|
1
|
ArrayList<String> divideMessage(String text)
این متد متن پیام را به بخش های تقسیم میکند که هیچ کدام از حد اکثر اندازه مجاز یک پیام sms بزرگتر نباشند
|
2
|
static SmsManager getDefault()
این متد برای دریافت ثابت پیشفرض SmsManager استفاده می شود.
|
3
|
void sendDataMessage(String destinationAddress, String scAddress, short destinationPort, byte[] data, PendingIntent sentIntent, PendingIntent deliveryIntent)
این متدبرای ارسال یک داده برپایه SMS برای پورت یک نرم افزار استفاده می شود.
|
4
|
void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents)
ارسال یک متن اس ام اس چند بخشی
|
5
|
void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent)
ارسال یک اس ام اس بر پایه متن
|
مثال
مثال زیر به شما نشان میدهد که چگونه از یک شیئ SmsManager برای ارسال یک اس ام اس، به یک شماره تلفن وارد شده، استفاده کنیم.
برای انجام این مثال شما باید یک دستگاه موبایل با آخرین نسخه اندروید را داشته باشید. شبیه ساز ممکن است نتواند تمام این مثال را بدرستی اجرا کند.
شماره
|
توضیحات
|
1
|
شما از نرم افزار اندروید استودیو برای ساخت برنامه tutorialspoint در شاخه com.example.tutorialspoint. استفاده خواهید کرد.
|
2
|
فایل src/MainActivity.java را ویرایش کنید. و کد های لازم برای ارسال ایمیل را وارد کنید.
|
3
|
فایل res/layout/activity_main.xml را ویرایش کنید. این فایل XML کنترل کننده طرحبندی نرم افزار شما است و شما باید کامپوننت های لازم را در آن اضافه کنید. ما یک رابط گرافیکی ساده برای دریافت شماره موبایل و متن پیام و یک دکمه ساده برای ارسال پیام استفاده می کنیم.
|
4
|
فایل res/values/strings.xml نیازی به تغییر ندارد.
|
5
|
فایل AndroidManifest.xml را مانند کد های توضیح داده شده در زیر جدول ویرایش کنید.
|
6
|
نرم افزار را اجرا کنید، شما میتوانید ظاهر نرم افزار را در شبیه ساز چک کنید ولی عملکرد آن باید در گوشی موبایل چک شود.
|
مثال های زیر محتوای فایل main 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 نمایانگر لوگوی نرم افزار است:
<?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>
در زیر کد های فایل res/values/strings.xml را مشاهدهمیکنید که ثابت جدیدی را تعریف می کنند.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tutorialspoint</string>
</resources>
کد های زیر کدهای فایل 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>
برای اجرای این نرم افزار، گوشی خود را به سیستم وصل کرده و یک اکتیویتی را باز کنید و در نوار آپشن روی دکمه RUN کلیک کنید . بعد از نصب نرم افزار شما تصویر زیر را مشاهده خواهید کرد.
حالا میتوانید شماره موبایل و متن پیام را برای ارسال وارد کنید. و روی دکمه Send SMS کلیک کنید. مطمئن شوید ارتباط GSM/CDMA شما بخوبی کار می کند و شما میتوانید پیام تحویل داده شده را مشاهده کنید.
شما میتوانید چند شماره موبایل را با کمک کاما وارد کنید. این شماره ها در یک آرایه درج شده و با یک حلقه پیام، به همه آنها ارسال می شود. در ادامه با استفاده از ساختار پیشفرض ارسال پیام اندروید برای مخاطب پیامی را ارسال می کند.
استفاده از اینتنت Built-in برای ارسال اس ام اس
شما میتوانید از اینتنت اندروید برای ارسال SMS با فراخوانی عملگر built-in SMS در اندروید استفاده کنید. بخش زیر توضیح قسمتهای مختلف شیئ اینتنت میباشد، که برای ارسال اس ام اس لازم است.
Intent Object - Action to send SMS :
شما از عملگر ACTION_VIEW برای اتصال به سیستم ارسال اس ام اس گوشی برای ارسال پیام استفاده می کنید. در زیر مثالی برای استفاده از اکشن ACTION_VIEW را مشاهده می کنید.
Intent smsIntent = new Intent(Intent.ACTION_VIEW);
Intent Object - Data/Type to send SMS
برای ارسال یک اس ام اس لازم است که smsto: را مشخص کنید smsto مانند URI از متد setData() استفاده میکندوdata type بصورت vnd.android-dir/mms-sms از متد setType() مانند کد های زیر استفاده خواهد کرد:
smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");
Intent Object - Extra to send SMS
اندروید پشتیبانی built-in برای افزودن شماره تلفن و متن پیام را دارا میباشد کد زیر را مشاهده کنید:
smsIntent.putExtra("address", new String("0123456789;3393993300"));
smsIntent.putExtra("sms_body", "Test SMS to Angilla");
در بالا آدرس و sms_body هردو به اندازه حروف حساس هستند و باید با حروف کوچک نوشته شوند. شما میتوانید با علامت سمی کالن ؛ یا همان نقطه ویرگول چند شماره تلفن را از هم جدا کرده و برای همه آنها پیام را ارسال کنید:
مثال
مثال زیر نحوه استفاده از شیئ اینتنت برای اتصال به SMS clientو ارسال اس ام اس به مخاطبین را مشاهده می کنید.
برای انجام این آموزش شما باید کد ها را روی یک گوشی واقعی با آخرین نسخه اندروید اجرا کنید در شبیه ساز تمام عملکرد این کدها کارایی نخواهد داشت.
شماره
|
توضیحات
|
1
|
شما با کمک نرم افزار اندروید استودیو برای ایجاد یک نرم افزار اندروید ایجاد خواهید کرد و نام آن را tutorialspoint در زیر شاخه com.example.tutorialspoint خواهید گذاشت
|
2
|
فایل src/MainActivity.java را برای کد های مورد نیاز ارسال اس ام اس ویرایش کنید.
|
3
|
فایل res/layout/activity_main.xml را برای ویرایش XML ظاهر سایت و افزودن کامپوننت های مورد نیاز ادیت کنید ما تنها یک دکمه برای اتصال به SMS Client ایجاد کرده ایم.
|
4
|
نیازی به تعریف ثابت های پیشفرض نیست این بخش خودبخود ایجاد می شود.
|
5
|
فایل AndroidManifest.xml را مانند کد های توضیح داده شده در زیر جدول ویرایش کنید.
|
6
|
نرم افزار را اجرا کنید تا بعد از نصب در صورت بروز ندادن خطا پنجره نرم افزار در موبایل یا شبیه ساز نمایش داده شود.
|
کد های زیر محتوای فایل 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;
}
}
کد های زیر محتوای فایل res/layout/activity_main.xml هستند و abc در این کدها معرف لوگوی نرم افزار ما خواهد بود.
<?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>
کد های زیر محتوای فایل res/values/strings.xml برای تعریف دو ثابت جدید می باشند.
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="app_name">tutorialspoint</string>
</resources>
کد های زیر کد های فایل 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>
ما نرم افزار را با اتصال موبایل به سیستم و باز کردن یک اکتیویتی در نرم افزار و کلیک روی دکمه RUN اجرا کرده ایم . پنجره زیر به شما امکان انتخاب نحوه اجرای برنامه را خواهد داد.
تصویر زیر در موبایلتان ظاهر خواهد شد:
حالا با استفاده از Compose SMS به built-in SMS clients متصل خواهید شد. که در تصویر زیر مشخص است:
شما میتوانید شما میتوانید فیلدهای پیشفرض را تغییر دهید و برای ارسال اس ام اس هم کافیست که روی دکمه Send کلیک کنید.
براي بهره مندي از مشاوره تخصصي در زمینه برنامه نویسی اندروید در کرج با شرکت سارگون تماس بگيريد