آموزش دریافت sms در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش دریافت sms در برنامه نویسی اندروید خواهیم پرداخت قبلتر آموزش هایی همانند دریافت اس ام اس های دیگران بدون فهیمدن آنها در برنامه نویسی اندروید و SmsManger را برای شما قرار دادیم در امروز می خواهیم آموزش دریافت sms هایی به جز اس ام های ورودی بپردازیم همانطور که می دانید در گوشی سه نوع اس ام اس وجود دارد آنهایی که ارسال می شود آنهایی که Draft (پیش نویس) می شوند و آنهایی که دریافت می شوند و در Inbox قرار می گیرند در ادامه با ما همراه باشید.
لینک های آموزش های قبلی
دریافت اس ام اس های دیگران بدون فهیمدن آنها در برنامه نویسی اندروید
ارسال sms طولانی در برنامه نویسی اندروید
در ابتدای کار وارد فایل AndroidManifest.xml شده و دسترسی زیر را اضافه کنید.
1 | <uses-permission android:name="android.permission.READ_SMS" /> |
سپس وارد فایل layout خود شده و یک ScrollView و یک TextView در آن قرار دهید همانند زیر
1 2 3 4 5 6 7 8 9 10 11 | <ScrollView 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" tools:context=".MainActivity" > <TextView android:id="@+id/textview" android:layout_width="wrap_content" android:layout_margin="10dp" android:layout_height="wrap_content" /> </ScrollView> |
سپس وارد اکتیویتی خود شده و کدهای زیر را در آن قرار دهید در اینجا نام آن برابر با MainActivity.java است.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 | package ir.programchi; import java.util.Date; import android.app.Activity; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.widget.TextView; /** * * @author Jefferson * */ public class MainActivity extends Activity { TextView textView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); textView = (TextView) findViewById(R.id.textview); getSMSDetails(); } private void getSMSDetails() { StringBuffer stringBuffer = new StringBuffer(); stringBuffer.append("*********SMS History*************** :"); Uri uri = Uri.parse("content://sms"); Cursor cursor = getContentResolver().query(uri, null, null, null, null); if (cursor.moveToFirst()) { for (int i = 0; i < cursor.getCount(); i++) { String body = cursor.getString(cursor.getColumnIndexOrThrow("body")) .toString(); String number = cursor.getString(cursor.getColumnIndexOrThrow("address")) .toString(); String date = cursor.getString(cursor.getColumnIndexOrThrow("date")) .toString(); Date smsDayTime = new Date(Long.valueOf(date)); String type = cursor.getString(cursor.getColumnIndexOrThrow("type")) .toString(); String typeOfSMS = null; switch (Integer.parseInt(type)) { case 1: typeOfSMS = "INBOX"; break; case 2: typeOfSMS = "SENT"; break; case 3: typeOfSMS = "DRAFT"; break; } stringBuffer.append("\nPhone Number:--- " + number + " \nMessage Type:--- " + typeOfSMS + " \nMessage Date:--- " + smsDayTime + " \nMessage Body:--- " + body); stringBuffer.append("\n----------------------------------"); cursor.moveToNext(); } textView.setText(stringBuffer); } cursor.close(); } } |
در بالا بعد از به دست آوردن اس ام اس های کاربر بر اساس نوع هرکدام جدا شده و در textView قرار خواهد گرفت .
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام ممنون از آموزشی که گذاشتهاید
میشه بفرمایید چطور میتونیم برنامه ای داشته باشیم که همۀ پیامک ها از یک شماره خاص را دریافت کنه و پیامک ها ی دیافت شده از این شماره به صندوق inbox نره. یه چیزی مثل برنامه بانک ها
سلام و درود
بانک ها با اس ام اس کار نمی کنند آنها با کد ussd کار می کنند هیچ جوره نمیشه شما اس ام اس رو بگیرید بدون اینکه وارد inbox بشه در اندروید های زیر 4.2 امکان پذیر است ولی در اندروید بالا امکان پذیر نیست بانک ها این کار با بدون نمایش dialog مربوط به ussd ارسال و دریافت می کند.
موفق و پیروز باشید.
سلام و تشکر
کد ها رو مطابق بالا داخل اندروید استودیو وارد کردم ولی برنامه در لحظه باز شدن با خطا مواجه می شود
طی تحقیقی که کردم مگه نباید از broadcast استفاده شود برای دریافت و یا ارسال دسته جمعی ؟؟