【发布时间】:2012-02-03 04:57:12
【问题描述】:
我将在 Android 操作系统启动时重新创建警报。
这就是我在清单中使用此代码的原因:
<receiver android:name=".RecreateTwoMonthAlarm" >
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED" />
<category android:name="android.intent.category.HOME" />
</intent-filter>
</receiver>
嗯,它运行完美。但每次我启动设备时,都会出现 NullPointer 异常。
这是我的代码 onReceive 方法:
//我要在这里初始化myPrefs
myPrefs = context.getSharedPreferences("myPrefs", MODE_WORLD_READABLE);
// 但我得到了类似的符号错误:MODE_WORLD_READABLE 无法解析为变量
Calendar calendar_GST_18_June_2011 = Calendar.getInstance();
calendar_GST_18_June_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_18_June_2011.set(2011, 5, 18, myPrefs.getInt("hour", 00), myPrefs.getInt("minute", 00), 0); // here i got exception
if(!(calendar_GST_18_June_2011.getTimeInMillis()<=currentTime)){
AM_2M_GST_1 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
intent = new Intent(context, AlarmReceiverNotificationForTwoMonth.class);
intent.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 20th June 2011.");
PI_2M_GST_1 = PendingIntent.getBroadcast(context, 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AM_2M_GST_1.set(AlarmManager.RTC_WAKEUP, calendar_GST_18_June_2011.getTimeInMillis(), PI_2M_GST_1);
}
// for the GST 19 August 2011
Calendar calendar_GST_17_August_2011 = Calendar.getInstance();
calendar_GST_17_August_2011.setTimeInMillis(System.currentTimeMillis());
calendar_GST_17_August_2011.set(2011, 7, 17,myPrefs.getInt("hour", 00), myPrefs.getInt("minute", 00), 0);
if(!(calendar_GST_17_August_2011.getTimeInMillis()<=currentTime)){
AM_2M_GST_2 = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
Intent in2 = new Intent(context, AlarmReceiverNotificationForTwoMonth.class);
in2.putExtra("MyMessage","Your 2 Monthly GST return is DUE on 19th August 2011.");
PI_2M_GST_2 = PendingIntent.getBroadcast(context, 1, in2, PendingIntent.FLAG_UPDATE_CURRENT);
AM_2M_GST_2.set(AlarmManager.RTC_WAKEUP, calendar_GST_17_August_2011.getTimeInMillis(),PI_2M_GST_2);
}
我认为这是因为我使用共享偏好数据在特定时间设置警报。不是吗??
我无法将共享首选项数据设置为设备启动或为什么我得到那个异常??
错误日志:
02-03 12:19:27.612: ERROR/AndroidRuntime(246): FATAL EXCEPTION: main
02-03 12:19:27.612: ERROR/AndroidRuntime(246): java.lang.RuntimeException: Unable to start receiver com.project.TaxToolbox.RecreateTwoMonthAlarm: java.lang.NullPointerException
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2821)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.app.ActivityThread.access$3200(ActivityThread.java:125)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2083)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.os.Handler.dispatchMessage(Handler.java:99)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.os.Looper.loop(Looper.java:123)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.app.ActivityThread.main(ActivityThread.java:4627)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at java.lang.reflect.Method.invokeNative(Native Method)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at java.lang.reflect.Method.invoke(Method.java:521)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at dalvik.system.NativeStart.main(Native Method)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): Caused by: java.lang.NullPointerException
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at com.project.TaxToolbox.RecreateTwoMonthAlarm.onReceive(RecreateTwoMonthAlarm.java:46)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): at android.app.ActivityThread.handleReceiver(ActivityThread.java:2810)
02-03 12:19:27.612: ERROR/AndroidRuntime(246): ... 10 more
请帮助我。
谢谢。
【问题讨论】:
-
得到 NullPointer 异常?日志在哪里?
-
我已经评论了我得到那个异常的那一行。无论如何,让我在第二次获得时放置日志。等待更新我正在做另一个项目。
-
myPrefs 在哪里启动?从这个角度来看,我希望它是 NULL
-
是的,可能是真的。现在我不打算初始化。如果我要在我的代码开始之前初始化它,我会遇到语法错误。
-
@LalitPoptani :请参阅更新后的问题。
标签: android notifications android-ndk system android-manifest