无法解析内容提供商://com.android.alarmclock/alarm

时间:2012-02-18 11:08:20

标签: android android-contentprovider alarm android-contentresolver

我正在为我制作这个应用程序,带有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

3 个答案:

答案 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);

它的工作正常。但我仍然没有得到如何禁用设置警报。请帮助。