获取保存在闹钟应用中的所有警报。

10

有没有可能获取Android闹钟应用程序中保存的警报列表? 我正在制作一个应用程序,只需要显示在闹钟应用程序中设置的闹钟。

谢谢


1
据我所知,市面上有很多闹钟应用程序,它们都可能使用自己的数据集。 - Pentium10
3个回答

14

关于此事,这篇文章中有很好的解释。并不能保证AlarmClock应用程序会存在于您的应用程序所安装的每个设备上。例如,许多HTC手机将其替换为HTC自己的“世界时钟”应用程序。

但是,假设默认的AlarmClock应用程序存在,则应该能够从其内容提供程序获取一个光标。可以参考此项目作为例子。


5
股票AlarmClock应用程序的内容提供者不是Android SDK的一部分。该提供者可能会在未来的Android版本中进行更改而没有警告。股票AlarmClock应用程序本身的身份也可能在未来版本的Android中发生变化。 - CommonsWare
谢谢伙计...是的,我已经参考了你提到的帖子,并且正在考虑使用Android闹钟...但这个项目非常酷...它有我需要的大部分东西...我会检查它并及时回复...再次感谢。 - JaVadid
@CommonsWare 谢谢你的信息,Mark。我想你是对的,但有些客户不听。我正在考虑放弃这个想法,但还需要做一些研究来迎合他们。再次感谢... - JaVadid
4
如@CommonsWare所述,AlarmClock应用程序公开的接口可能会发生更改,但这与任何其他暴露一组意图或内容提供程序的Android应用程序没有区别。您需要优雅地处理异常,但仔细设计(和大量测试)应该提供相当稳定的实现。 - seanhodges

8
final String tag_alarm = "tag_alarm";
Uri uri = Uri.parse("content://com.android.alarmclock/alarm");
Cursor c = getContentResolver().query(uri, null, null, null, null);
Log.i(tag_alarm, "no of records are " + c.getCount());
Log.i(tag_alarm, "no of columns are " + c.getColumnCount());
if (c != null) {
    String names[] = c.getColumnNames();
    for (String temp : names) {
        System.out.println(temp);
    }
    if (c.moveToFirst()) {
        do {
            for (int j = 0; j < c.getColumnCount(); j++) {
                Log.i(tag_alarm, c.getColumnName(j)
                        + " which has value " + c.getString(j));
            }
        } while (c.moveToNext());
    }
}

使用这段代码...你将获得所有的细节。享受吧!


2
这实际上是一个很好的答案,应该被接受。那些注册表保存了警报值,只是需要根据您对它们的处理方式将它们视为int日期。同样真实的是,闹钟应用程序可能不存在。 - quinestor

3
为了调试目的,你可以从控制台使用“adb shell dumpsys alarm”命令。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接