ارسال پیامک در برنامه نویسی اندروید

4 سال پیش

ارسال پیامک در برنامه نویسی اندروید

در این درس از مجموعه آموزش برنامه نویسی سایت سورس باران، در مورد ارسال پیامک در برنامه نویسی اندروید صحبت خواهیم کرد.

 

در انذروید، می توانید از SmsManager API یا دستگاه های ساخته شده در برنامه پیام کوتاه (SMS) برای ارسال پیامک در اندروید استفاده کنید. در این آموزش، ما دو مثال اساسی برای ارسال پیامک در برنامه نویسی اندروید به شما نشان می دهیم –

SmsManager API

SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage("phoneNo", null, "sms message", null, null);

 

برنامه توکار ارسال پیامک

Intent sendIntent = new Intent(Intent.ACTION_VIEW);
sendIntent.putExtra("sms_body", "default content"); 
sendIntent.setType("vnd.android-dir/mms-sms");
startActivity(sendIntent);

البته ، هر دو به (permission) اجازه SEND_SMS نیاز دارند.

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

به غیر از روش فوق، توابع مهم دیگری نیز در کلاس SmsManager موجود است. این متد ها در زیر ذکر شده است:

(ArrayList<String> divideMessage(String text

این متد متن پیام را به چندین بخش تقسیم می کند ، بزرگتر از حداکثر اندازه پیام کوتاه.

()static SmsManager getDefault

این متد برای بدست آوردن نمونه پیش فرض SmsManager استفاده می شود

(void sendDataMessage (String destinationAddress، String scAddress، short destinationPort، byte [] data، PendingIntent sentIntent، PendingIntent deliveryIntent)

این متد برای ارسال پیام کوتاه مبتنی بر داده به یک پورت برنامه خاص استفاده می شود.

(void sendMultipartTextMessage(String destinationAddress, String scAddress, ArrayList<String> parts, ArrayList<PendingIntent> sentIntents, ArrayList<PendingIntent> deliveryIntents

ارسال یک پیامک متنی چند بخشی.

(void sendTextMessage(String destinationAddress, String scAddress, String text, PendingIntent sentIntent, PendingIntent deliveryIntent

ارسال پیامک متنی

 

مثال

مثال زیر نحوه استفاده از شی SmsManager برای ارسال پیام کوتاه به شماره تلفن همراه را به شما نشان می دهد.

برای آزمایش این مثال ، شما به دستگاه همراه واقعی مجهز به جدیدترین سیستم عامل اندروید نیاز خواهید داشت ،

۱ شما از Android Studio IDE برای ایجاد یک برنامه Android و نامگذاری آن به عنوان tutorialspoint در یک بسته com.example.tutorialspoint استفاده خواهید کرد.
۲ پرونده src / MainActivity.java را اصلاح کرده و کد لازم را برای محافظت از ارسال پیامک اضافه کنید.
۳ طرح XML را تغییر دهید فایل res / layout / activity_main.xml در صورت لزوم هر جز GUI اضافه کنید. من یک رابط کاربری گرافیکی ساده برای گرفتن شماره تلفن همراه و متن پیامک برای ارسال و یک دکمه ساده برای ارسال پیامک اضافه می کنم.
۴ نیازی به تعریف ثابت رشته های پیش فرض در res / values ​​/ strings.xml نیست. Android studio از ثابت های پیش فرض محافظت می کند.
۵ AndroidManifest.xml را مطابق شکل زیر تغییر دهید
۶ برنامه را اجرا کنید تا شبیه ساز اندروید را راه اندازی کرده و نتیجه تغییرات انجام شده در برنامه را تأیید کنید.

در زیر محتوای پرونده فعالیت اصلی تغییر یافته src / com.example.tutorialspoint / MainActivity.java است.

package com.example.tutorialspoint;

import android.Manifest;
import android.content.pm.PackageManager;
import android.os.Bundle;
import android.app.Activity;

import android.support.v4.app.ActivityCompat;
import android.support.v4.content.ContextCompat;
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 {
   private static final int MY_PERMISSIONS_REQUEST_SEND_SMS =0 ;
   Button sendBtn;
   EditText txtphoneNo;
   EditText txtMessage;
   String phoneNo;
   String message;

   @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.editText);
      txtMessage = (EditText) findViewById(R.id.editText2);

      sendBtn.setOnClickListener(new View.OnClickListener() {
         public void onClick(View view) {
            sendSMSMessage();
         }
      });
   }
    
   protected void sendSMSMessage() {
      phoneNo = txtphoneNo.getText().toString();
      message = txtMessage.getText().toString();
        
      if (ContextCompat.checkSelfPermission(this,
         Manifest.permission.SEND_SMS)
         != PackageManager.PERMISSION_GRANTED) {
            if (ActivityCompat.shouldShowRequestPermissionRationale(this,
               Manifest.permission.SEND_SMS)) {
            } else {
               ActivityCompat.requestPermissions(this,
                  new String[]{Manifest.permission.SEND_SMS},
                  MY_PERMISSIONS_REQUEST_SEND_SMS);
            }
      }
   }
    
   @Override
   public void onRequestPermissionsResult(int requestCode,String permissions[], int[] grantResults) {
      switch (requestCode) {
         case MY_PERMISSIONS_REQUEST_SEND_SMS: {
            if (grantResults.length > 0
               && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                  SmsManager smsManager = SmsManager.getDefault();
                  smsManager.sendTextMessage(phoneNo, null, message, null, null);
                  Toast.makeText(getApplicationContext(), "SMS sent.", 
                     Toast.LENGTH_LONG).show();
            } else {
               Toast.makeText(getApplicationContext(), 
                  "SMS faild, please try again.", Toast.LENGTH_LONG).show();
               return;
            }
         }
      }

   }
}

در زیر محتوای پرونده res / layout / activity_main.xml وجود دارد –

<?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: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="MainActivity">

   <TextView
      android:id="@+id/textView1"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Sending SMS Example"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      
   <TextView
      android:id="@+id/textView2"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials point "
      android:textColor="#ff87ff09"
      android:textSize="30dp"
      android:layout_below="@+id/textView1"
      android:layout_alignRight="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton" />
      
   <ImageButton
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageButton"
      android:src="@drawable/abc"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />
      
   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText"
      android:hint="Enter Phone Number"
      android:phoneNumber="true"
      android:textColorHint="@color/abc_primary_text_material_dark"
      android:layout_below="@+id/imageButton"
      android:layout_centerHorizontal="true" />

   <EditText
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/editText2"
      android:layout_below="@+id/editText"
      android:layout_alignLeft="@+id/editText"
      android:layout_alignStart="@+id/editText"
      android:textColorHint="@color/abc_primary_text_material_dark"
      android:layout_alignRight="@+id/imageButton"
      android:layout_alignEnd="@+id/imageButton"
      android:hint="Enter SMS" />

   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Send Sms"
      android:id="@+id/btnSendSMS"
      android:layout_below="@+id/editText2"
      android:layout_centerHorizontal="true"
      android:layout_marginTop="48dp" />

</RelativeLayout>

در زیر محتوای res / values / strings.xml برای تعریف دو ثابت جدید وجود دارد –

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">tutorialspoint</string>
</resources>

در زیر محتوای پیش فرض AndroidManifest.xml آمده است –

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.tutorialspoint" >
  
   <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.tutorialspoint.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>

 

بیایید برنامه Tutorialspoint شما را اجرا کنیم. من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

اکنون می توانید شماره تلفن همراه مورد نظر و پیام متنی را وارد کنید تا روی آن شماره ارسال شود. در آخر برای ارسال پیامک خود بر روی دکمه ارسال پیامک کلیک کنید. اطمینان حاصل کنید که اتصال GSM / CDMA شما برای تحویل پیام کوتاه به گیرنده آن خوب کار می کند.

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

 

استفاده از Intent توکار برای ارسال پیامک در اندروید

با فراخوانی تابع پیام کوتاه داخلی اندروید می توانید از Android Intent برای ارسال پیامک استفاده کنید. بخش زیر بخشهای مختلف شی Intent مورد نیاز ما برای ارسال پیام کوتاه را توضیح می دهد.

Intent Object – اقدام برای ارسال پیام کوتاه

برای راه اندازی یک سرویس گیرنده پیام کوتاه نصب شده در دستگاه اندروید، از اقدام ACTION_VIEW استفاده خواهید کرد. در زیر نحو ساده ای برای ایجاد Intent با اکشن ACTION_VIEW آمده است.

Intent smsIntent = new Intent(Intent.ACTION_VIEW);

 

Intent Object – داده / نوع برای ارسال پیامک

برای ارسال پیام کوتاه باید smsto را مشخص کنید: به عنوان URI با استفاده از متد ()setData  و نوع داده به vnd.android-dir / mms-sms با استفاده از متد ()setType  به شرح زیر است –

smsIntent.setData(Uri.parse("smsto:"));
smsIntent.setType("vnd.android-dir/mms-sms");

 

Intent Object – فیلدهای اضافی ارسال پیامک در اندروید

اندروید از پشتیبانی توکار برای اضافه کردن شماره تلفن و پیام کوتاه برای ارسال پیامک به شرح زیر برخوردار است –

smsIntent.putExtra("address"  , new String("0123456789;3393993300"));
smsIntent.putExtra("sms_body"  , "Test SMS to Angilla");

 

در اینجا آدرس و sms_body به حروف کوچک و بزرگ حساس هستند و باید فقط با حروف کوچک مشخص شوند. شما می توانید بیش از یک عدد را در یک رشته مشخص کنید اما با نقطه ویرگول  (؛) از هم جدا شوند.

مثال

مثال زیر نحوه استفاده از شی Intent برای راه اندازی سرویس گیرنده پیام کوتاه برای ارسال پیام کوتاه به گیرندگان داده شده را به شما نشان می دهد.

برای آزمایش این مثال ، شما به دستگاه همراه واقعی مجهز به جدیدترین سیستم عامل اندروید نیاز خواهید داشت ، د

۱ شما از Android studio IDE برای ایجاد یک برنامه Android و نامگذاری آن به عنوان tutorialspoint در یک بسته com.example.tutorialspoint استفاده خواهید کرد.
۲ پرونده src / MainActivity.java را اصلاح کرده و کد لازم را برای محافظت از ارسال پیامک اضافه کنید.
۳ طرح XML را تغییر دهید فایل res / layout / activity_main.xml در صورت لزوم هر جز GUI اضافه کنید. من یک دکمه ساده برای راه اندازی سرویس گیرنده SMS اضافه می کنم.
۴ نیازی به تعریف ثابتهای پیش فرض نیست. Android studio از ثابتهای پیش فرض حافظت می کند.
۵ AndroidManifest.xml را مطابق شکل زیر تغییر دهید
۶ برنامه را اجرا کنید تا شبیه ساز Android را راه اندازی کرده و نتیجه تغییرات انجام شده در برنامه را تأیید کنید.

در زیر محتوای پرونده فعالیت اصلی تغییر یافته src / com.example.tutorialspoint / MainActivity.java است.

package com.example.tutorialspoint;

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.button);
      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 ("01234"));
      smsIntent.putExtra("sms_body"  , "Test ");
      
      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 وجود دارد

<?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:layout_width="match_parent"
   android:layout_height="match_parent" 
   android:paddingLeft="@dimen/activity_horizontal_margin"
   android:paddingRight="@dimen/activity_horizontal_margin"
   android:paddingTop="@dimen/activity_vertical_margin"
   android:paddingBottom="@dimen/activity_vertical_margin" 
   tools:context=".MainActivity">
   
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Drag and Drop Example"
      android:id="@+id/textView"
      android:layout_alignParentTop="true"
      android:layout_centerHorizontal="true"
      android:textSize="30dp" />
      
   <TextView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Tutorials Point "
      android:id="@+id/textView2"
      android:layout_below="@+id/textView"
      android:layout_centerHorizontal="true"
      android:textSize="30dp"
      android:textColor="#ff14be3c" />
      
   <ImageView
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:id="@+id/imageView"
      android:src="@drawable/abc"
      android:layout_marginTop="48dp"
      android:layout_below="@+id/textView2"
      android:layout_centerHorizontal="true" />
      
   <Button
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="Compose SMS"
      android:id="@+id/button"
      android:layout_below="@+id/imageView"
      android:layout_alignRight="@+id/textView2"
      android:layout_alignEnd="@+id/textView2"
      android:layout_marginTop="54dp"
      android:layout_alignLeft="@+id/imageView"
      android:layout_alignStart="@+id/imageView" />
      
</RelativeLayout>

در زیر محتوای res / values / strings.xml برای تعریف دو ثابت جدید وجود دارد

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <string name="app_name">tutorialspoint</string>
</resources>

در زیر محتوای پیش فرض AndroidManifest.xml آمده است –

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
   package="com.example.tutorialspoint" >
      
   <application
      android:allowBackup="true"
      android:icon="@drawable/ic_launcher"
      android:label="@string/app_name"
      android:theme="@style/AppTheme" >
      
      <activity
         android:name="com.example.tutorialspoint.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>

 

بیایید برنامه Tutorialspoint شما را اجرا کنیم. من تصور می کنم شما AVD خود را هنگام راه اندازی محیط ایجاد کرده اید. برای اجرای برنامه از Android studio، یکی از پرونده های فعالیت پروژه خود را باز کنید و از نوار ابزار روی Android StudioRun Icon کلیک کنید. Android Studio برنامه را روی AVD شما نصب کرده و شروع به کار می کند و اگر با تنظیمات و برنامه هایتان همه چیز خوب باشد، زیر پنجره شبیه ساز نمایش داده می شود.

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

اکنون برای راه اندازی سرویس گیرنده های SMS توکار اندرویداز دکمه Compose SMS استفاده کنید که در زیر نشان داده شده است

می توانید هر یک از قسمتهای پیش فرض داده شده را اصلاح کرده و در نهایت از دکمه send SMS برای ارسال پیامک خود به گیرنده ذکر شده استفاده کنید.

منبع.

لیست جلسات قبل آموزش برنامه نویسی اندروید

  1. نگاهی کلی به برنامه نویسی اندروید
  2. تنظیمات محیط  در برنامه نویسی اندروید
  3. معماری برنامه نویسی اندروید
  4. اجزای برنامه در برنامه نویسی اندروید
  5. Hello World در برنامه نویسی اندروید
  6. سازماندهی و دسترسی به منابع در برنامه نویسی اندروید
  7. فعالیت در برنامه نویسی اندروید
  8. سرویس در برنامه نویسی اندروید
  9. گیرنده های پخش در برنامه نویسی اندروید
  10. ارائه دهنده محتوا در برنامه نویسی اندروید
  11. قطعات در برنامه نویسی اندروید
  12. Intent و فیلتر در برنامه نویسی اندروید
  13. طرح بندی رابط کاربری در برنامه نویسی اندروید
  14. کنترل های رابط کاربری در برنامه نویسی اندروید
  15. مدیریت رویدادها در برنامه نویسی اندروید
  16. استایل و تم ها در برنامه نویسی اندروید
  17. اجزای سفارشی در برنامه نویسی اندروید
  18. کشیدن و رها کردن در برنامه نویسی اندروید
  19. نوتیفیکیشن ها در برنامه نویسی اندروید
  20. سرویس های مبتنی بر مکان در برنامه نویسی اندروید
  21. ارسال ایمیل در برنامه نویسی اندروید
0
برچسب ها :
نویسنده مطلب erfan molaei

دیدگاه شما

بدون دیدگاه