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

دانلود سورس کد اپلیکیشن ارسال همزمان پیامک به چندین مخاطب

استاندارد

در این بخش از جدیدترین سورس نرم افزارهای اندروید، یک اپلیکیشن ارسال پیامک برای چند مخاطب را برگزیدیم.

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

وقتی بر روی دکمه Contacts کلیک نمایید، قسمت مخاطبین باز شده تا بتوانید مخاطبین مورد نظر خود را انتخاب نمایید.

همان طور که مشاهده می کنید، این اپلیکیشن قادر است در پایگاه داده خود مخاطب مورد نظر را اضافه و یا حذف نماید.

قابلیت جستجوی مخاطب، ویژگی دیگر این اپلیکیشن است.

علاقه مندان به توسعه اپلیکیشن های اندرویدی و همچنین علاقه مندان به یادگیری Basic4Android می توانند سورس کد این اپلیکیشن را از لینک زیر دانلود نمایند.

دانلود سورس کد اپلیکیشن ارسال Sms

استاندارد

سورس کد اپلیکیشن اندرویدی ارسال sms ، در این قسمت برای دانلود گذاشته شده است.

این سورس کد ساده با استفاده از Eclipse توسعه یافته است.

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

دانلود سورس کد اپلیکیشن Sms Scheduler برای اندروید

استاندارد

در این بخش، سورس کد اپلیکیشن Sms Scheduler برای شما آورده شده است تا بتوانید با استفاده از کدهای آن برنامه خود را توسعه دهید.

این برنامه شامل تنظیماتی است که امکان ارسال Sms در زمان مشخص را برای شما فراهم می کند.

این برنامه که Main نام دارد، با گرفتن اطلاعات روز و زمان، می تواند به صورت خودکار اقدام به ارسال Sms کند.

سورس کد این برنامه، از طریق لینک زیر قابل دانلود می باشد.