1

将全局数据放入广播接收器类时出现问题,

这是我的编码,帮助我进入广播接收器类

public class Global extends Application{

String mobileNumber;
public String getMobileNumber() {
    return mobileNumber;
}
public void setMobileNumber(String mobileNumber) {
    this.mobileNumber = mobileNumber;
}

这是我的接收器类,

public class TextMessageReceiver extends BroadcastReceiver{

Global global;
Context context;
int count;



String number;
public void onReceive(Context context, Intent intent)
{
      global=(Global)context;
      number = global.getMobileNumber();

    Bundle bundle=intent.getExtras();
    Object[] messages=(Object[])bundle.get("pdus");
    SmsMessage[] sms=new SmsMessage[messages.length];

    for(int n=0;n<messages.length;n++){
        sms[n]=SmsMessage.createFromPdu((byte[]) messages[n]);
    }

    for(SmsMessage msg:sms){
        if(msg.getOriginatingAddress().endsWith(number))
        {
            SMS.updateMessageBox(msg.getOriginatingAddress(),msg.getMessageBody(),context);
        /*SMS.updateMessageBox("\nFrom: "+msg.getOriginatingAddress()+"\n"+
                "Message: "+msg.getMessageBody()+"\n");*/
            /*((SMS) context).delete();*/
        abortBroadcast();
        }
    }
}

}

我需要从 getter setter 获取手机号码,但我不能,如何获取?

4

2 回答 2

2

改变

global=(Global)context;

关注:

global=(Global)context.getApplication();

现在访问全局类的字段。

于 2012-10-12T12:02:22.553 回答
0

如果您在整个应用程序中需要该手机号码,您可能需要使用sharedPreferences并将其存储在那里。

像这样保存手机号码

SharedPreferences sharedPreferences = getPreferences(context, MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("mobilenumber", value);
editor.commit();

并在您的接收器中像这样检索它:

SharedPreferences sharedPreferences = getPreferences(MODE_PRIVATE);
String number = sharedPreferences.getString("mobilenumber", "");

重要的是要知道共享首选项会被保存,即使您离开应用程序也是如此。

于 2012-10-12T12:06:38.820 回答