当我的应用程序关闭时,当引用另一个 class 中的静态方法时,字符串在 class 扩展 BroadcastReceiver 中返回 null

When my app is closed Strings are returning null in a class extending BroadcastReceiver when references static methods in another class

我正在创建一个具有短信发送功能的应用程序。我目前遇到的问题涉及调用扩展 BroadcastReceiver 的 class 的 AlarmManager(运行正常)。使用 AlarmManager 的 class 是 MainMenu.class,扩展 BroadcastReceiver 的 class 是 AlarmReceiver.class。

在主菜单 class 中,用户输入 phone 号码和消息。在 AlarmReceiver class 中,我试图通过访问 getPhoneNumber() 方法和 getMessage() 方法来发送短信。当我这样做并且应用程序关闭时,即使它正在访问 MainMenu class 中的静态方法,phone 号码和消息都 return null 到 AlarmReceiver class。 =14=]

这是 MainMenu.class 中 AlarmManager 的代码:

int hours, minutes;

hours = timePicker.getCurrentHour();
minutes = timePicker.getCurrentMinute();

Calendar cal = Calendar.getInstance();
cal.setTimeInMillis(System.currentTimeMillis());
cal.set(Calendar.HOUR_OF_DAY, hours);
cal.set(Calendar.MINUTE, minutes);

Intent intentAlarm = new Intent(MainMenu.this, AlarmReceiver.class);
intentAlarm.putExtra("phoneNumber", phoneNumber);
intentAlarm.putExtra("message", message);
AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);

alarmManager.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(),  PendingIntent.getBroadcast(MainMenu.this, 1, intentAlarm,
                                        PendingIntent.FLAG_CANCEL_CURRENT));

这里是 AlarmReceiver 的代码 class:

public class AlarmReceiver extends BroadcastReceiver
{

    @Override
    public void onReceive(Context context, Intent intent) 
    {
        Intent intentAlarm = new Intent();
        String phoneNumber = intentAlarm.getStringExtra("phoneNumber");
        String message = intentAlarm.getStringExtra("message");
        SmsManager sms = SmsManager.getDefault();
        sms.sendTextMessage(phoneNumber,  null, message, null, null);
    }//end onReceive

}//end AlarmReceiver

我什至尝试使用 SharedPreferences 来记住 phone 号码和消息,但仍然 return 为空。

提前致谢。

I have even gone as far as trying to use SharedPreferences to remember the phone number and message but that still return a null also

无需使用 SharedPreferencesstatic 方式从 MainMenu class.

访问变量

您可以使用 Intent 将所需数据从 MainMenu 传递到 AlarmReceiver:

Intent intentAlarm = new Intent(MainMenu.this, AlarmReceiver.class);
intentAlarm.putExtra("phone_number",MainMenu.getPhoneNumber());

现在从 intent 中获取 phone 数字,这是 AlarmReceiver onReceive 方法中的第二个参数 class 使用 phone_number 键。