مشکل دریافت پیامک در اندروید

0 امتیاز
42 بازدید
سوال شده بهمن 16, 1394 توسط rahnama.m  

سلام

من کدهای زیر رو برای دریافت پیامک در اندروید نوشتم ولی برنامه متوقف میشه و در logcat پیام زیر نمایش داده میشه

خطای logcat:

02-05 14:37:00.330: E/AndroidRuntime(825): FATAL EXCEPTION: main
02-05 14:37:00.330: E/AndroidRuntime(825): java.lang.RuntimeException: Unable to start receiver com.example.androidreceivesms.SMSReceiver: java.lang.NullPointerException
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.app.ActivityThread.handleReceiver(ActivityThread.java:2431)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.app.ActivityThread.access$1500(ActivityThread.java:141)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1332)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.os.Handler.dispatchMessage(Handler.java:99)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.os.Looper.loop(Looper.java:137)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.app.ActivityThread.main(ActivityThread.java:5103)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at java.lang.reflect.Method.invokeNative(Native Method)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at java.lang.reflect.Method.invoke(Method.java:525)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at dalvik.system.NativeStart.main(Native Method)
02-05 14:37:00.330: E/AndroidRuntime(825): Caused by: java.lang.NullPointerException
02-05 14:37:00.330: E/AndroidRuntime(825): 	at com.example.androidreceivesms.SMSReceiver.getMassageFromIntent(SMSReceiver.java:42)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at com.example.androidreceivesms.SMSReceiver.onReceive(SMSReceiver.java:20)
02-05 14:37:00.330: E/AndroidRuntime(825): 	at android.app.ActivityThread.handleReceiver(ActivityThread.java:2424)
02-05 14:37:00.330: E/AndroidRuntime(825): 	... 10 more

کد برنامه :

package com.example.androidreceivesms;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.gsm.SmsMessage;
import android.util.Log;
import android.widget.Toast;

public class SMSReceiver extends BroadcastReceiver {
	public SMSReceiver() {
	}

	@Override
	public void onReceive(Context context, Intent intent) {
		
		String phoneNo = "";
		String message = "";
		
		SmsMessage [] msgs = getMassageFromIntent(intent); 
		
		if(msgs != null){
			for(int i=0 ; i<msgs.length ; i++){
				phoneNo = msgs[i].getDisplayOriginatingAddress();
				message = msgs[i].getMessageBody();
				Toast.makeText(context, 
						"new sms : \n" +
						phoneNo + "\n" +
						message
						, Toast.LENGTH_SHORT).show();
			}
		}
		
		
	}
	
	private static SmsMessage [] getMassageFromIntent (Intent intent)
	{
		Object[] messages = (Object[]) intent.getSerializableExtra("pdu");
		byte[][] pduobjs = new byte [messages.length][]; 
		
		for(int i=0 ; i<messages.length ; i++){
			Log.i("*********", "22222222222"+i);
			pduobjs[i]=(byte[]) messages[i];
		}
		
		byte [][] pdus=new byte[pduobjs.length][];

		int pduCount = pdus.length;

		SmsMessage [] msgs = new SmsMessage[pduCount];
		Log.i("*********", "5555555555");
		for(int i=0 ; i<pduCount ; i++){
			pdus[i] = pduobjs[i];
			msgs[i] = SmsMessage.createFromPdu(pdus[i]);
		}
		return msgs;
	}
}

 

این مطلب را به اشتراک بگذارید

1 پاسخ

+1 امتیاز
پاسخ داده شده بهمن 20, 1394 توسط ASHKARAN  
انتخاب شده بهمن 20, 1394 توسط ASHKARAN
 
بهترین پاسخ

با عرض سلام

عذرخواهی می کنم کمی طول کشید تا پاسخ بدم

مدتیه که سرم خیلی شلوغه ....

به خط زیر توجه بفرمایید :

Object[] messages = (Object[]) intent.getSerializableExtra("pdu");

باید به شکل زیر باشه :

Object[] messages = (Object[]) intent.getSerializableExtra("pdus");

  فقط یک کاراکتر رو جا انداختید !

موفق باشید 

979 سوال

819 پاسخ

1,329 دیدگاه

1,274 کاربر

متاسفانه نیستم

این مطلب را به اشتراک بگذارید

ali.ashkaran@gmail
ما .....
  • سعی بر پاسخگویی به سوالات دیگران داریم.
  • به سوال و یا نظر دیگران احترام می گذاریم .
  • این وبسایت را به دیگران معرفی می کنیم.
  • همواره صمیمیت و ادب را رعایت می کنیم.
  • به سوالمان برچسب های مرتبط اضافه می کنیم.
  • در حین طرح سوال فرد خاصی را مخاطب قرار نمی دهیم .
...