1

グローバル データをブロードキャスト レシーバー クラスに取得する際に問題がありました。

これが私のコーディングでした。BroadCast レシーバー クラスに入るのを手伝ってください。

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 に答える