آموزش اندروید استودیوآموزش های برنامه نویسی اندروید
آموزش برنامه نویسی اندروید با اندروید استودیو (بخش پنجاه: ارسال پیامک Sms با استفاده از پیام رسان پیش فرض اندروید )
در بخش قبلی به قابلیت PhoneCall در برنامه نویسی اندروید، پرداختیم.
با استفاده از PhoneCall می توانستیم با دادن یک شماره ، و زدن یک دکمه Button که بر روی آن “تماس” نوشته شود، به آن شماره زنگ بزنیم.
در این بخش ، قابلیت دیگر ارتباطی یعنی ارسال پیامک را در برنامه نویسی اندروید آموزش می دهیم.
این آموزش، بسیار شبیه به بخش قبلی می باشد.
این بار با استفاده از دو مورد شماره و پیام، پیام را به شماره ای که می خواهیم می فرستیم.
برای این پروژه ما از Intent که در بخش قبلی آن را آموزش دادیم ، استفاده می کنیم. زیرا Intent قادر است داده ای را به صورت پیام به activity دیگری بفرستد.
ما برای ارسال پیام نیز به اکتیویتی تماس احتیاج داریم. پس شماره و پیام را به این اکتیویتی با استفاده از اینتنت می فرستیم.
دو EditText ایجاد می کنیم.
یکی از آن ها که یک نوع PlainText است، کاربر پیام خود را وارد می کند.
کاربر می تواند شماره ای که می خواهد به آن پیام ارسال کند را در EditText که یک ابزار Phone است، وارد نماید.
شماره و پیام داخل این دو ابزار را به ACTION_VIEW می فرستیم. ACTION_VIEW وظیفه ی عملیات ارسال پیامک را دارد.
کدهای 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 کلیک شد، عملیاتی که می خواهیم را برای ما انجام دهد.
SendButton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { String Msg = Message.getText().toString(); String nmbr = PhoneNumber.getText().toString(); Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + nmbr)); intent.putExtra( "sms_body", Msg ); startActivity(intent); } });
در کد بالا ابتدا با استفاده از متد ()getText().toString ، پیام و شماره ای که در ابزار Plain Text و phone وجود دارد، به رشته تبدیل شده و به متغیرهای Msg و nmbr که یک نوع رشته هستند، داده می شود.
این کار لازم است زیرا ما می خواهیم پیام را در Intent به صورت رشته ارسال نماییم.
سپس یک شی به نام intent از نوع Intent می سازیم و Intent.ACTION_VIEW را به آن نسبت می دهیم.
در قسمت بعدی با استفاده از متد putExtra که در کلاس Intent وجود دارد، شی intent را مقداردهی می کنیم.
(در این قسمت پیامی که داده ایم ، به عنوان یکی از پارامترهای شی intent مورد استفاده قرار می گیرد)
در آخر با استفاده از متد startActivity این اکتیویتی را شروع می کنیم.
کد کامل 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.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(); Intent intent = new Intent( Intent.ACTION_VIEW, Uri.parse( "sms:" + nmbr)); intent.putExtra( "sms_body", Msg ); startActivity(intent); } }); } }