آموزش ارسال sms در برنامه نویسی اندروید

در این مقاله از مرکز درس می خواهیم در مورد نحوه ارسال پیامک ها در زبان برنامه نویسی صحبت کنیم و برنامه نویسی آن را آموزش بدهیم. در اندروید شما می توانید از 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 نیاز دارند.

<uses-permission android:name=”android.permission.SEND_SMS” />

جدا از متد بالا، تعداد کمی توابع مهم دیگر در کلاس SmsManager وجود دارد. این متدها در زیر فهرست شده اند:

ردیف متد و توضیح آن
۱

ArrayList<String>divideMessage(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<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> 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 می باشد:

<?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>

بیایید اجرای برنامه tutorialspoint شما را امتحان کنیم. فرض می کنیم که شما دستگاه موبایل واقعی تان را به کامپیوترتان وصل کرده اید. برای اجرای برنامه از استودیو اندروید؛ یکی از فایلهای activity پروژه تان را باز کنید و روی آیکون اجرا   Eclipse Run Icon کلیک کنید که در قسمت نوار ابزار قرار دارد. قبل از آغاز اپلیکیشن شما؛ نصب کننده استودیو اندروید پنجره زیر را نشان می دهد که در آن می توانید گزینه ای را انتخاب کنید که می خواهید اپلیکیشن شما در آن اجرا شود.

آموزش ارسال sms در برنامه نویسی اندروید

اکنون می توانید شماره موبایل دلخواه تان را وارد کنید و نیز متن پیامی را که می خواهید به آن شماره ارسال کنید؛ تایپ نمایید. در نهایت بر روی دکمه 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 می باشد.

<?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>

بیایید اجرای اپلیکیشن tutorialspoint شمارا امتحان کنیم. فرض می کنیم که شما دستگاه موبایل اندروید واقعی تان را به کامپیوتر خود متصل کرده اید. برای اجرای اپلیکیشن از استودیو اندروید، یکی از فایل های activity پروژه خودتان را باز کنید و روی آیکون اجرا   Eclipse Run Icon کلیک کنید که در قسمت نوار ابزار قرار گرفته است. قبل از این که اپلیکیشن شما آغاز شود؛ استودیو اندروید پنجره زیر را نمایش می دهد تا گزینه ای را انتخاب کنید که در آن شما می خواهید اپلیکیشن خود را اجرا کنید.

آموزش ارسال sms در برنامه نویسی اندروید

دستگاه موبایل خود را به عنوان یک گزینه انتخاب کنید؛ سپس اگر دستگاه موبایل خود را بررسی کنید؛ خواهید دید که تصویر زیر به نمایش در می آید:

آموزش ارسال sms در برنامه نویسی اندروید

اکنون با به کار گرفتن دکمه Compose SMS، سرویس های ارسال پیامک داخلی را راه اندازی می کنید که در زیر نشان داده شده است:

آموزش ارسال sms در برنامه نویسی اندروید

شما می توانید هر یک از فیلدهای پیشفرض داده شده را اصلاح کنید و سپس در نهایت از دکمه ارسال SMS استفاده می کنید تا پیام خود را به گیرنده ذکر شده ارسال نمایید.

بیشتر بخوانید :   آموزش تگ div
ساسان سروشه

نوشته‌های مرتبط

دیدگاه‌ها

*
*