pouya1999best@g
چهارشنبه 25 تیر 1393, 16:07 عصر
سلام دوستان؛
من یک دریافت کننده شماره تلفن و متن پیامک دارم که اونا رو باید توی Alert Dialog نشون بده؛
package ir.home.receiversms;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class IncomingSms extends BroadcastReceiver{
String str;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
str = "";
if (bundle != null){
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]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";}
AlertDialog ad = new AlertDialog.Builder(context).create();
ad.setMessage(str);
ad.show();}}}
همون طور که میدونیم باید در context آلرت دیالوگ،this قرار بگیره؛
اما به دلیل وجود Context contect در ابتدای متد onReceive دیگه به من اجازه قرار دادن this رو نمیده و من مجبورم از context استفاده کنم.
و طبق معمول با فورس کلوز مواجه میشم:افسرده:
آیا راه حلی برای این مشکل وجود دارد؟؟؟
من یک دریافت کننده شماره تلفن و متن پیامک دارم که اونا رو باید توی Alert Dialog نشون بده؛
package ir.home.receiversms;
import android.app.AlertDialog;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
public class IncomingSms extends BroadcastReceiver{
String str;
@Override
public void onReceive(Context context, Intent intent) {
Bundle bundle = intent.getExtras();
SmsMessage[] msgs = null;
str = "";
if (bundle != null){
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]);
str += "SMS from " + msgs[i].getOriginatingAddress();
str += " :";
str += msgs[i].getMessageBody().toString();
str += "\n";}
AlertDialog ad = new AlertDialog.Builder(context).create();
ad.setMessage(str);
ad.show();}}}
همون طور که میدونیم باید در context آلرت دیالوگ،this قرار بگیره؛
اما به دلیل وجود Context contect در ابتدای متد onReceive دیگه به من اجازه قرار دادن this رو نمیده و من مجبورم از context استفاده کنم.
و طبق معمول با فورس کلوز مواجه میشم:افسرده:
آیا راه حلی برای این مشکل وجود دارد؟؟؟