我正在为我制作这个应用程序,带有api 9和股票闹钟。
我发现了这个:http://code.google.com/p/android-alarm-database/
并在创建我的主要活动时:
ContentResolver cr = getContentResolver();
AlarmDatabase ad = new AlarmDatabase(cr);
Record r = ad.getNearestEnabledAlarm();
当我使用URI内容时://com.android.alarmclock/alarm它在logcat中给我:
Cannot resolve provider for content://com.android.alarmclock/alarm
Failed to find provider info for com.android.alarmclock
而且我试过内容://com.android.deskclock/alarm:
Permission denied: checkComponentPermission() reqUid=10009
Permission Denial: opening provider com.android.deskclock.AlarmProvider from ProcessRecord{407cf3b0 15716:com.my.app/10137} (pid=15716, uid=10137) requires null or null
答案 0 :(得分:2)
从API 9开始的正确URI是“content://com.android.deskclock/alarm”。我仍然在解决许可问题。
答案 1 :(得分:2)
请注意/data/data/com.android.alarmclock/databases/alarms.db(API 7-8)或/data/data/com.android.deskclock/databases/中的alarms.db文件的权限alarms.db(API 9-15)是 -rw-rw ---- 。
通过这个东西我们无法访问db文件,即使有了URIMatcher类的想法。
直到API 8,我们没有可用于Alarms的专用类,但是从API 9开始,我们可以设置一个带有加载额外内容的Intent来在大致时间设置一个警报。
我也在寻找解决这个问题的方法,希望有人能找到解决这个问题的完整解决方案。
答案 2 :(得分:1)
您可以通过以下代码设置闹钟,因为开发人员提供了一个新类来设置闹钟。使用此代码
Intent i = new Intent(AlarmClock.ACTION_SET_ALARM);
i.putExtra(AlarmClock.EXTRA_HOUR, 11);
i.putExtra(AlarmClock.EXTRA_MINUTES, 37);
i.putExtra(AlarmClock.EXTRA_MESSAGE, "birthday");
startActivity(i);
它的工作正常。但我仍然没有得到如何禁用设置警报。请帮助。