آموزش اندروید استودیوآموزش های برنامه نویسی اندروید
آموزش برنامه نویسی اندروید با اندروید استودیو (بخش پنجاه و یکم: ارسال پیامک 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"/>
سلام من همینکارارو انجام دادم ولی موقع نصب برنامه در اندرروید با یک دیالوگی میاد ومیگه که این برنامه خطرناک است ممکن است به گوشی اسیب بزندچیکارکنم؟
سلام برنامه من پیغام has stopped میده باید چه کاری انجام بدم؟