واکنون ایزی گرام 3 | ایزی گرام 3 با کلی امکانات جدید منتشر شد | کلیک کنید

آموزش ارسال SMS در اندروید

دسته‌بندی: آموزش
مهر ۱۴, ۱۳۹۷

آموزش ارسال SMS در اندروید

در این مقاله به آموزش ارسال SMS در اندروید می پردازیم. برای این منظور دو روش وجود دارد که در ادامه آورده شده اند.

انواع روش های ارسال SMS در اندروید :

 

به کار بردن  SMS Manager

به کار بردن Intent داخلی

 

به کار بردن  SMS Manager برای ارسال SMS در اندروید

 

SMS Manager  باعث کنترل عملکرد  Sms می شود.

 

شما می توانید این آبجکت را از طریق فراخوانی روش استاتیک SmsManager.getDefault() ایجاد کنید، مانند زیر:

 

SmsManager smsManager = SmsManager.getDefault();‎‎

 

زمانی که آبجکت Sms Manager را داریم قادر خواهیم بود برای ارسال Sms به یک شماره موبایل معلوم روش sendDataMessage()  را به کار ببریم. مثال:

 

smsManager.sendTextMessage("phoneNo", null, "SMS text", null, ‎null);‎‎

 

 

کد تغییر یافته ی فایل اصلی در زیر آمده است:

 

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 می باشد.

 

<linearlayout ‎xmlns:android="http://schemas.android.com/apk/res/android" ‎

android:layout_width="fill_parent" ‎

android:layout_height="fill_parent" ‎

android:orientation="vertical">

‎

‎ <textview‎ ‎ android:id="@+id/textViewPhoneNo" ‎

‎ android:layout_width="wrap_content" ‎

‎ android:layout_height="wrap_content" ‎

‎ android:text="@string/phone_label" />‎

‎ <edittext‎ ‎ android:id="@+id/editTextPhoneNo" ‎

‎ android:layout_width="fill_parent" ‎

‎ android:layout_height="wrap_content" ‎

‎ android:inputtype="phone" />‎

‎ <textview‎ ‎ android:id="@+id/textViewMessage" ‎

‎ android:layout_width="wrap_content" ‎

‎ android:layout_height="wrap_content" ‎

‎ android:text="@string/sms_label" />‎

‎ <edittext‎ ‎ android:id="@+id/editTextSMS" ‎

‎ android:layout_width="fill_parent" ‎

‎ android:layout_height="wrap_content" ‎

‎ android:inputtype="textMultiLine" />‎

‎ <button android:id="@+id/btnSendSMS" ‎

‎ android:layout_width="fill_parent" ‎

‎ android:layout_height="wrap_content" ‎

‎ android:text="@string/send_sms_label" />‎

‎

</linearlayout>

 

این کد نیز دارای فایل res/values/strings.xml بوده و دو ثابت جدید را معرفی می کند.

 

<?xml version="1.0" encoding="utf-8" ?>

‎

‎<resources>

‎

‎ <string name="app_name">SendSMSDemo</string>‎

‎ <string name="action_settings">Settings</string>‎

‎ <string name="hello_world">Hello world!</string>‎

‎ <string name="phone_label">Enter Phone Number:</string>‎

‎ <string name="sms_label">Enter SMS Message:</string>‎

‎ <string name="send_sms_label">Send SMS</string>‎ ‎ ‎

‎

</resources>‎

 

محتوای پیش فرض AndroidManifest.xml :

 

<?xml version="1.0" encoding="utf-8" ?>

‎

‎<manifest ‎xmlns:android="http://schemas.android.com/apk/res/android" ‎

‎ package="com.example.sendsmsdemo" ‎

‎ android:versioncode="1" ‎

‎ android:versionname="1.0">

‎ <uses-sdk ‎ android:minsdkversion="8" ‎

‎ android:targetsdkversion="17" />‎

‎ <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.sendsmsdemo.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>‎

 

اکنون زمان اجرای برنامه ی SendSMSDemo است.  دستگاه موبایل اندروید خود را به کامپیوتر وصل کرده . جهت اجرای برنامه از Eclipse، یکی ازفایل های فعالیت پروژه را باز  نمایید و روی آیکن Run از تولبار کلیک کنید.

 

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

 

 ارسال SMS در اندروید

 

در این زمان قادر خواهید بود شماره موبایل مورد نظر خود را انتخاب نمایید و یک پیام متنی به آن بفرستید. حال روی دکمه ی Send SMS کلیک نمایید. همچنین حواستان باشد اتصال GSM شما درست باشد تا پیامتان به گیرنده برسد.

 ارسال SMS در اندروید

 

همچنین قادر خواهید بود تعدادی SMS را که توسط کاما مجزا شده اند بگیرید و سپس مجبور خواهید بود در برنامه ی خود آنها را به یک رشته array تجزیه نمایید و در آخر می شود یک حلقه (loop) را به کار برد تا پیام خود را به تمام شماره های داده شده ارسال نماید.

همچنین ببینید :   متحرک سازی Floating Action Button در اندروید

 

استفاده از Intent داخلی برای ارسال SMS در اندروید

 

شما می توانید با به کار بردن Android Intent و سیستم SMS داخلی اندروید نیز این کار را انجام دهید.

آشنایی با قسمت های مختلف Intent object :

 

اکتیویتی Intent Object

 

اکتیویتی ACTION_VIEW جهت شروع یک کاربر SMS نصب شده روی دستگاه اندروید استفاده می شود.

 

ایجاد Intent ساده با فعالیت ACTION_VIEW:

 

Intent smsIntent = new Intent(Intent.ACTION_VIEW);‎‎

 

Intent object_ نوع /داده

 

در صورتی که هدف ارسال یک 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 دقیق است و فقط باید در کاراکترهای کوچک ایجاد شود. شما می توانید تعداد زیادی شماره را در رشته مشخص نمایید و آنها را با علامت (;) یا سمی کولون تفکیک نمایید.

 

در اینجا کد تغییر یافته ی فایل اکتیویتی اصلی را می بینید.

 

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 است

 

‎‎‎‎‎‎‎‎<linearlayout ‎xmlns:android="http://schemas.android.com/apk/res/android" ‎

‎ android:layout_width="fill_parent" ‎

‎ android:layout_height="fill_parent" ‎

‎ android:orientation="vertical">

‎

‎ <button android:id="@+id/sendSMS" ‎

‎ android:layout_width="fill_parent" ‎

‎ android:layout_height="wrap_content" ‎

‎ android:text="@string/compose_sms" />

</linearlayout>

 

در ادامه کد res/values/strings.xml برای تعریف دو ثابت جدید آورده شده.

 

<?xml version="1.0" encoding="utf-8" ?>

‎

‎<resources>

‎

‎ <string name="app_name">SendSMSDemo</string>‎

‎ <string name="hello_world">Hello world!</string>‎

‎ <string name="action_settings">Settings</string>‎

‎ <string name="compose_sms">Compose SMS</string>‎‎

</resources>‎

 

این نیز کد پیش فرض فایل AndroidManifest.xml است.

 

<?xml version="1.0" encoding="utf-8" ?>

‎

‎<manifest ‎xmlns:android="http://schemas.android.com/apk/res/android" ‎

‎ package="com.example.sendsmsdemo" ‎

‎ android:versioncode="1" ‎

‎ android:versionname="1.0">

‎

‎ <uses-sdk ‎ android:minsdkversion="8" ‎

‎ android:targetsdkversion="17" />‎

‎ <application‎ ‎ android:allowbackup="true" ‎

‎ android:icon="@drawable/ic_launcher" ‎

‎ android:label="@string/app_name" ‎

‎ android:theme="@style/AppTheme">

‎

‎ <activity‎ ‎ ‎android:name="com.example.sendsmsdemo.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>‎

 

حال بگذارید برنامه ی SendSMSDemo ران شود. دستگاه اندروید را نیز به سیستم وصل نمایید. برای اجرا از Eclipse یکی از فایل های فعالیت پروژه ی خود را باز نمایید و روی آیکن Run از تولبار کلیک کنید. قبل از شروع برنامه ی شما Eclipse پنجره ی زیر را برای گزینش محل اجرای برنامه نشان می دهد.

 

 

دستگاه اندروید را   انتخاب کنید و آن را چک نمایید این صفحه را خواهید دید:

 

 

حال دکمه ی Compose SMS را برای آغاز کاربرهای داخلی SMS لمس نمایید:

 

 

همچنین قادر خواهید بود هر کدام از بخش های از قبل تعیین شده را تغییر داده و در آخر دکمه ی send SMS را بزنید.

 

امیدوارم از آموزش ارسال SMS در اندروید لذت برده باشید.

پیام بگذارید


تومان