.getStringExtra 返回空值而不是 String
.getStringExtra returning null value instead String
在 putExtra 中获取值但无法在 getStringExtra 中检索。
public class StartNotificationReceiver extends BroadcastReceiver{
private void sendTodayNotification() {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date todateDate = new Date();
String TodayDate_String = dateFormat.format(todateDate);
String Val=AppSettingsPref.getStringValue(context, AppSettingsPref.KEY_TODAY_DATE_AND_TIME, "");
if(!Val.equals(TodayDate_String))
{
AppSettingsPref.saveString(context, AppSettingsPref.KEY_TODAY_DATE_AND_TIME, TodayDate_String);
final HGDate englishDate = new HGDate(context);
englishDate.setGregorian(Calendar.YEAR, Calendar.MONTH + 1, 1);
final HGDate islamicDateToday = new HGDate(englishDate);
islamicDateToday.toHigri();
int islamicDayToday = islamicDateToday.getDay();
int islamicMonthToday = islamicDateToday.getMonth();
String otherMonth = Dates.islamicMonthName(context, islamicDateToday.getMonth() - 1);
int adjustedDate = AppSettingsPref.getIntValue(context, AppSettingsPref.CURRENT_ADJUSTMENT_KEY, 0);
String todayDateTimeinhijri = islamicDateToday.getDay() + (adjustedDate) + " "
+ otherMonth + " " + islamicDateToday.getYear();
Intent intent = new Intent(context,NotificationReceiver.class);
-------->intent.putExtra("todayDateTimeinhijri", todayDateTimeinhijri.toString());<-----------
databaseAccess = DatabaseAccess.getInstance(context);
databaseAccess.open();
ArrayList<Event> events = databaseAccess.showEventsByMuslimType(muslimType);
for (int i = 0; i < events.size(); i++) {
Event event = events.get(i);
String[] date = event.getHejriDate().split("-");
int islamicDayOfEvent = Integer.parseInt(date[0].trim());
int islamicMonthOfEvent = Integer.parseInt(date[1].trim());
boolean isViladat = event.isVilaadat;
if (islamicDayToday == islamicDayOfEvent && islamicMonthToday == islamicMonthOfEvent) {
makeNotification(event);
}
}
}
intent.putExtra("todayDateTimeinhijri", todayDateTimeinhijri.toString());
这是 .getStringExtra 获取空值的地方
public class NotificationReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
this.context = context;
}
todayDateTime2 = intent.getStringExtra("todayDateTimeinhijri");
}
为了更好地理解,删除了额外的代码
提前致谢
我们将不胜感激。
找不到解决方案。
你在哪里发送(或开始)带有参数“todayDateTimeinhijri”的意图?
如果您不发送意图,NotificationReceiver 将无法接收任何内容。
//example activity using receiver and send intent via broadcast ( sendBroadcast(intent) )
public class Example extends AppCompatActivity {
private NotificationReceiver mNotificationReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNotificationReceiver = new NotificationReceiver();
IntentFilter intentFilter = new IntentFilter("your_action");
registerReceiver(mNotificationReceiver, intentFilter);
StartNotificationReceiver mStartNotificationReceiver = new StartNotificationReceiver(getApplicationContext());
mStartNotificationReceiver.sendTodayNotification();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mNotificationReceiver != null) {
unregisterReceiver(mNotificationReceiver);
}
}
private class NotificationReceiver extends BroadcastReceiver {
Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
String action = intent.getAction();// should be "your_action"
String todayDateTime2 = intent.getStringExtra("todayDateTimeinhijri");
Log.i("NotificationReceiver","action: " + action );
Log.i("NotificationReceiver","dateTime: " + todayDateTime2 );
}
}
public class StartNotificationReceiver {
private Context context;
public StartNotificationReceiver(Context ctx){
this.context = ctx;
}
public void sendTodayNotification() {
Intent intent = new Intent("your_action");
intent.putExtra("todayDateTimeinhijri", "your String value");
context.sendBroadcast(intent);
}
}
}
将额外的内容放入意图中并不会发送。某处会有 sendBroadcast() 调用或类似调用。
在 putExtra 中获取值但无法在 getStringExtra 中检索。
public class StartNotificationReceiver extends BroadcastReceiver{
private void sendTodayNotification() {
DateFormat dateFormat = new SimpleDateFormat("dd-MM-yyyy");
Date todateDate = new Date();
String TodayDate_String = dateFormat.format(todateDate);
String Val=AppSettingsPref.getStringValue(context, AppSettingsPref.KEY_TODAY_DATE_AND_TIME, "");
if(!Val.equals(TodayDate_String))
{
AppSettingsPref.saveString(context, AppSettingsPref.KEY_TODAY_DATE_AND_TIME, TodayDate_String);
final HGDate englishDate = new HGDate(context);
englishDate.setGregorian(Calendar.YEAR, Calendar.MONTH + 1, 1);
final HGDate islamicDateToday = new HGDate(englishDate);
islamicDateToday.toHigri();
int islamicDayToday = islamicDateToday.getDay();
int islamicMonthToday = islamicDateToday.getMonth();
String otherMonth = Dates.islamicMonthName(context, islamicDateToday.getMonth() - 1);
int adjustedDate = AppSettingsPref.getIntValue(context, AppSettingsPref.CURRENT_ADJUSTMENT_KEY, 0);
String todayDateTimeinhijri = islamicDateToday.getDay() + (adjustedDate) + " "
+ otherMonth + " " + islamicDateToday.getYear();
Intent intent = new Intent(context,NotificationReceiver.class);
-------->intent.putExtra("todayDateTimeinhijri", todayDateTimeinhijri.toString());<-----------
databaseAccess = DatabaseAccess.getInstance(context);
databaseAccess.open();
ArrayList<Event> events = databaseAccess.showEventsByMuslimType(muslimType);
for (int i = 0; i < events.size(); i++) {
Event event = events.get(i);
String[] date = event.getHejriDate().split("-");
int islamicDayOfEvent = Integer.parseInt(date[0].trim());
int islamicMonthOfEvent = Integer.parseInt(date[1].trim());
boolean isViladat = event.isVilaadat;
if (islamicDayToday == islamicDayOfEvent && islamicMonthToday == islamicMonthOfEvent) {
makeNotification(event);
}
}
}
intent.putExtra("todayDateTimeinhijri", todayDateTimeinhijri.toString());
这是 .getStringExtra 获取空值的地方
public class NotificationReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent) {
this.context = context;
}
todayDateTime2 = intent.getStringExtra("todayDateTimeinhijri");
}
为了更好地理解,删除了额外的代码 提前致谢
我们将不胜感激。 找不到解决方案。
你在哪里发送(或开始)带有参数“todayDateTimeinhijri”的意图? 如果您不发送意图,NotificationReceiver 将无法接收任何内容。
//example activity using receiver and send intent via broadcast ( sendBroadcast(intent) )
public class Example extends AppCompatActivity {
private NotificationReceiver mNotificationReceiver;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mNotificationReceiver = new NotificationReceiver();
IntentFilter intentFilter = new IntentFilter("your_action");
registerReceiver(mNotificationReceiver, intentFilter);
StartNotificationReceiver mStartNotificationReceiver = new StartNotificationReceiver(getApplicationContext());
mStartNotificationReceiver.sendTodayNotification();
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mNotificationReceiver != null) {
unregisterReceiver(mNotificationReceiver);
}
}
private class NotificationReceiver extends BroadcastReceiver {
Context context;
@Override
public void onReceive(Context context, Intent intent) {
this.context = context;
String action = intent.getAction();// should be "your_action"
String todayDateTime2 = intent.getStringExtra("todayDateTimeinhijri");
Log.i("NotificationReceiver","action: " + action );
Log.i("NotificationReceiver","dateTime: " + todayDateTime2 );
}
}
public class StartNotificationReceiver {
private Context context;
public StartNotificationReceiver(Context ctx){
this.context = ctx;
}
public void sendTodayNotification() {
Intent intent = new Intent("your_action");
intent.putExtra("todayDateTimeinhijri", "your String value");
context.sendBroadcast(intent);
}
}
}
将额外的内容放入意图中并不会发送。某处会有 sendBroadcast() 调用或类似调用。