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

برنامه نویسی اندروید دریافت smsReviewed by بردیا on Sep 4Rating: 5.0برنامه نویسی اندروید دریافت smsنحوه دریافت sms در برنامه نویسی اندروید و یا حذف پیام دریافتی از یک شماره خاص

آموزش برنامه نویسی اندروید

 

 

احتمالا تا حالا ایده ای به ذهنتون رسیده که روی دریافت اس ام اس تو اندروید کار کنید ،یعنی بتونید اس ام اس های دریافتی رو مدیریت کنید کاربرد زیادی می تونه توی صنعت داشته باشه برای این کار شما باید بجای یک activity از یک receiver بعد باید این receiver رو اول در فایل manifest به صورت زیر برای دریافت اس ام اس در برنامه نویسی اندروید وارد کنید.

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

بعد در همین فایل manifest باید مجوز دریافت اس ام اس را در برنامه اندروید با دستور زیر بگیرید

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

خب حالا نوبت ساخت کلاس دریافت sms  در برنامه نویسی اندروید هستش،یک کلاس رو می سازیم و بعد کد های زیر را باید داخل کلاس بنویسیم که بتوانیم به محض این که یک پیامک وارد گوشی هدف شد این برنامه اجرا شود ،یکی از دلایلی که برای این کار نباید از activity  استفاده کنیم این هستش که باید برنامه ما بتواند همیشه در پشت صحنه در حال اجرا باشد .

public class Rec_sms extends BroadcastReceiver {
private Database db;


	
	@Override
	public void onReceive(Context context, Intent intent) {
		// TODO Auto-generated method stub
		db=new Database(context);
		 Bundle bundle = intent.getExtras();        
	        SmsMessage[] msgs = null;
	        String messageReceived = "";
	        
	        
	        if (bundle != null)
	        {
	            //---retrieve the SMS message received---
	           Object[] pdus = (Object[]) bundle.get("pdus");
	            msgs = new SmsMessage[pdus.length];            
	            for (int i=0; i<msgs.length; i++)
	            {
	                msgs[i] = SmsMessage.createFromPdu((byte[])pdus[i]);                
	                messageReceived += msgs[i].getMessageBody().toString();
	                messageReceived += "\n";        
	            }
	            //---display the new SMS message---
	            //Toast.makeText(context, messageReceived, Toast.LENGTH_SHORT).show();
	            // Get the Sender Phone Number
db.open();
	            String senderPhoneNumber=msgs[0].getOriginatingAddress ();
	            
	            if(senderPhoneNumber.contains(db.tel())){
	            Toast.makeText(context, messageReceived+"از طرف"+senderPhoneNumber+"////", Toast.LENGTH_LONG).show();
	            
 
	          
	            }
	            db.close();
	            
	}
	
	}
}

در این کد من یک شماره را در بانک اطلاعات ذخیره کردم و فقط به ازای دریافت اس ام اس از این شماره برنامه پیغام را نشان خواهد داد.

شاید شما بخواهید که اس ام اس دریافتی حتی در جعبه پیام های شما نرود برای این کار فقط بعد از چک کردن شماه دستور زیر را در بنویسید

 

abortBroadcast();

با این کار شما میتواندی مشخص کنید که پیغام های یک شماره خاص در جعبه پیام استاندارد شما نیاآید و در عوض در یک جعبه پیام دیگر آن را ذخیره کنید .

 

 

 

۶ نظر

    • سلام
      دوست عزیز ،با کد دریافت شما با شماره های ورودی دارید پیامک ها رو دریافت می کنید ،بهترین را اینه که یک پایگاه داده درست کنید و پیامک های دریافتی رو ذخیره کنید طوری که یک bool هم بذارید برای مشخص شدن خوانده شدن یا نشدن پیام

پاسخ دهید