当我的应用程序关闭时,当引用另一个 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
无需使用 SharedPreferences
或 static
方式从 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
键。
我正在创建一个具有短信发送功能的应用程序。我目前遇到的问题涉及调用扩展 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
无需使用 SharedPreferences
或 static
方式从 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
键。