java – AlarmManager.AlarmClockinfo.getNextAlarmClock()导致N
问题
当我尝试使用AlarmManager.AlarmClockInfo对象getNextAlarmClock()我的应用程序抛出:尝试在空对象引用上调用虚方法’long android.app.AlarmManager $AlarmClockInfo.getNextAlarmClock()’ 我的守则 我的代码的相关部分…… public class MyAppWidget extends AppWidgetProvider { private PendingIntent my_svc = null; public void onUpdate(Context c,AppWidgetManager awm,int[] appWidgetIds) { final AlarmManager m = (AlarmManager)c.getSystemService(Context.ALARM_SERVICE); final Calendar alarm_time = Calendar.getInstance(); final Intent i = new Intent(c,MyService.class); // set alarm for 2015-Jul-7 10:35:55 AM alarm_time.setStime(new Date(2015,7,10,35,55)); // set up the service if necessary if ( my_svc == null ) { my_svc = PendingIntent.getService(c,i,PendingIntent.FLAG_CANCEL_CURRENT); } // set the alarm m.setExact(AlarmManager.RTC,alarm_time.getTime().getTime(),my_service); // now write a log message to confirm the alarm was set // **THIS IS THE CODE THAT THROWS THE EXCEPTION** AlarmManager.AlarmClockInfo aci = m.getNextAlarmClock(); Log.v("MyAppWidget","next alarm at: " + aci.toString()); } } 背景资料 我正在为Android开发一个家庭/锁屏小部件应用程序.小部件中的信息需要在非常特定的时间更新,而不是在OS广播APPWIDGET_UPDATE操作时.我成功地遵循了this tutorial on using 但是,我不需要每分钟更新一次窗口小部件,而是每隔2-3天在特定时间更新一次.所以我尝试使用AlarmManager.setExact()而不是setRepeating().该应用程序编译没有错误,似乎运行得很好,但小部件不会更新,当我认为它应该.我已经确认正确的时间被提交到setExact()函数,但由于更新没有按计划发生,我想知道警报是否真的设置好了.那时我尝试使用getNextAlarmClock()并开始遇到这些问题. 应用程序/仿真器规范 应用程序: > minSdkVersion:21 仿真器: >名称:Nexus 5 API 22 我尝试过的事情 >记录alarm_time.getTime().toString以确认我正在设置正确的闹钟时间 我完全被这个难过了.如果你有任何想法为什么我无法获得有关下一个设置闹钟的信息,或者为什么我用setExact()设置的闹钟没有响起,我将是一个快乐的男孩.谢谢!!! 解决方法
AlarmClock和AlarmManager是两个完全不同的东西:闹钟由时钟应用程序和其他应用程序通过
setAlarmClock()设置,适合唤醒用户,整个系统的用户都可以看到(取决于Android的制造商和版本).
这与setExact()完全不同,后者仅为您的应用设置程序化警报 – 用户无法看到.您可以使用adb shell dumpsys警报转储当前警报列表,以帮助调试警报是否已正确安排. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |