آموزش برنامه نویسی اندروید با اندروید استودیو (بخش پنجاه و یکم: ارسال پیامک Sms با استفاده از خود اپلیکیشن )

استاندارد

در بخش قبلی در مورد نحوه ارسال sms در اپلیکیشن با استفاده از Intent صحبت کردیم.

پیام و شماره مخاطبی که می خواستیم پیام بفرستیم با استفاده از Intent به اکیتیویتی جدید و در واقع برنامه SMS که در سیستم عامل اندروید وجود دارد، محول می شد.

ولی سوالی که در اینجا پیش می آید اینست که چگونه می توان در خود اپلیکیشن و به صورت مستقیم اقدام به ارسال پیامک نمود؟

در این بخش با ما همراه باشید تا این شیوه را هم آموزش دهیم.

برای این کار دیگر نیازی به Intent ها نخواهیم داشت.

ولی این بخش حتی می تواند ساده تر از بخش قبلی باشد.

کاری که باید انجام بدهیم استفاده از کلاس SmsManager است.

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

ولی باید دسترسی و مجوز ارسال پیامک به اپلیکیشن اندرویدیمان داده شود.

تمام مراحل طراحی Layout اپلیکیشن مثل جلسه قبل می باشد ولی ما بار دیگر برای جلوگیری از ابهام این مرحله را شرح می دهیم.

طراحی Layout اپلیکیشن

همانن بخش قبلی باید دو  EditText ایجاد نماییم.

یکی از آن ها که یک نوع PlainText است، کاربر پیام خود را وارد می کند.

و دومی مربوط به اینست که کاربر شماره ای که می خواهد به آن پیام ارسال کند را در EditText که یک ابزار Phone است، وارد نماید.

من یک پروژه در اندروید استودیو به نام Sms-Gsm ایجاد می کنم.

به قسمت لایه اپلیکیشن می روم و سپس از قسمت Text Fields ها در Palette ، یک ابزار Plain Text و یک ابزار Phone به Layout برنامه اضافه می کنم.

از قسمت Widget ها هم یک دکمه Button را برای ارسال اضافه میکنم.

کدهای Layout اپلیکیشن

<?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:id="@+id/activity_main"
    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="com.gsm_developers.sms_gsm.MainActivity">

    <EditText
        android:layout_width="300dp"
        android:layout_height="200dp"
        android:inputType="textPersonName"
        android:text="write your text"
        android:ems="10"
        android:layout_marginTop="23dp"
        android:id="@+id/editText"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true" />

    <EditText
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:inputType="phone"
        android:ems="10"
        android:layout_below="@+id/editText"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="37dp"
        android:id="@+id/editText2" />

    <Button
        android:text="Send"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/editText2"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="53dp"
        android:id="@+id/button" />
</RelativeLayout>

کدنویسی جاوای پروژه

به سراغ قسمت کدنویسی جاوای پروژه می رویم. (این قسمت نیز همانند بخش قبلی می باشد)

ابتدا باید سه ابزار PlainText که برای Message به کار می رود و Phone که یک EditText است و دکمه Button را به قسمت جاوای برنامه معرفی کنم.

پس دو شی EditText و یک شی Button خارج از متد ()onCreate به صورت سراسری ایجاد می کنم.

EditText Message;
EditText PhoneNumber;
Button SendButton;

حال در متد ()onCreate این سه شی را با استفاده از آیدی هایی که در لایه اپلیکیشن به سه ابزارمان دادیم، مقدار دهی میکنم.

Message =(EditText)findViewById(R.id.editText);
PhoneNumber =(EditText)findViewById(R.id.editText2);
SendButton =(Button)findViewById(R.id.button);

در مرحله ی بعدی یک رویداد Listener برای دکمه ایجاد می کنم تا وقتی بر روی دکمه Button کلیک شد، عملیاتی که می خواهیم را برای ما انجام دهد.

از این قسمت به بعد مراحل جدیدی را می خواهیم انچام بدهیم.

ابتدا باید پیام و شماره تماس مخاطب را از ابزارهایی که در قسمت لایه اپلیکیشن تعریف کرده بودیم، به رشته string تبدیل نماییم.

String Msg = Message.getText().toString();
String nmbr = PhoneNumber.getText().toString();

در قسمت بعدی، یک شی به نام MySms از کلاس SmsManager تعریف می کنیم.

SmsManager MySms = SmsManager.getDefault();

یکی از متدهای این کلاس یعنی sendTextMessage  برای ارسال پیامک به کار می رود.

پس با استفاده از شی MySms به این متد دسترسی پیدا می کنیم و پیام و شماره تماس که دو نوع رشته هستند را در قسمت آرگومان ورودی این متد، می نویسیم.

MySms.sendTextMessage(nmbr, null, Msg, null, null);

ورودی اول، مربوط به آدرس مقصد ( شماره مخاطب ) ، ورودی دوم مربوط به آدرس مبدا (شماره فرستنده ) ، ورودی سوم، مربوط به پیام متنی و دو ورودی بعدی مربوط به مورد های ارسال و تحویل می باشند.

کد دکمه Button :

SendButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String Msg = Message.getText().toString();
                String nmbr = PhoneNumber.getText().toString();

                SmsManager MySms = SmsManager.getDefault();
                MySms.sendTextMessage(nmbr, null, Msg, null, null);
            }

        });

کد کامل MainActivity

package com.gsm_developers.sms_gsm;

import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.telephony.SmsManager;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

    EditText Message;
    EditText PhoneNumber;
    Button SendButton;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Message =(EditText)findViewById(R.id.editText);
        PhoneNumber =(EditText)findViewById(R.id.editText2);
        SendButton =(Button)findViewById(R.id.button);

        SendButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View arg0) {

                String Msg = Message.getText().toString();
                String nmbr = PhoneNumber.getText().toString();

                SmsManager MySms = SmsManager.getDefault();
                MySms.sendTextMessage(nmbr, null, Msg, null, null);
            }

        });
    }
}

نوبت به قسمت مجوزهای اپلیکیشن می رسد. برای ارسال پیامک Sms ، این اپلیکیشن باید دسترسی ارسال آن را داشته باشد.

پس به قسمت دسترسی ها یعنی AndroidManifest.xml می رویم.

و دسترسی زیر را قبل از تگ application> تعریف می کنیم.

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

پروژه را Run می کنیم.

پیام و شماره مورد نظر خود را وارد می کنیم.

دکمه Send را می زنیم تا پیام ارسال شود.

2 نظر برای “آموزش برنامه نویسی اندروید با اندروید استودیو (بخش پنجاه و یکم: ارسال پیامک Sms با استفاده از خود اپلیکیشن )

  1. SAMYAR

    سلام من همینکارارو انجام دادم ولی موقع نصب برنامه در اندرروید با یک دیالوگی میاد ومیگه که این برنامه خطرناک است ممکن است به گوشی اسیب بزندچیکارکنم؟

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *