3

我正在为我制作这个应用程序,带有 api 9 和股票闹钟。

我发现了这个:http ://code.google.com/p/android-alarm-database/

在创建我的主要活动时是这样的:

ContentResolver cr = getContentResolver();
AlarmDatabase ad = new AlarmDatabase(cr);
Record r = ad.getNearestEnabledAlarm();

当我使用 URI content://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
4

3 回答 3

3

请注意 /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 之前,我们还没有可用于警报的专用类,但是从 API 9 开始,我们可以设置一个带有加载的 Extras 的 Intent,以在大约时间设置警报。

我也在寻找解决这个问题的方法,希望有人找到这个烂摊子的完整解决方案。

于 2013-01-08T13:39:16.857 回答
2

从 API 9 开始的正确 URI 是“content://com.android.deskclock/alarm”。但是,我仍在解决权限问题。

于 2012-03-14T16:01:59.370 回答
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);

它工作正常。但我仍然不知道如何禁用设置的警报。请帮忙。

于 2012-04-23T07:37:01.900 回答