【问题标题】:Get all alarms saved in the alarm application获取保存在警报应用程序中的所有警报
【发布时间】:2010-06-30 07:24:13
【问题描述】:

是否有可能获得保存在 android 的警报应用程序中的警报列表?我正在制作一个应用程序,它只需要显示警报应用程序中设置的警报。

感谢

【问题讨论】:

  • AFAIK 知道有很多时钟闹钟应用程序,都可能使用自己的数据集。

标签: android alarms


【解决方案1】:

this post 对此有很好的解释。无法保证 AlarmClock 应用程序将在安装了您的应用程序的每台设备上。例如,许多 HTC 手机将其替换为 HTC 自己的“世界时钟”应用程序。

但是,假设现有 AlarmClock 应用程序存在,您应该能够从其内容提供程序获取光标。以this project 为例。

【讨论】:

  • 库存 AlarmClock 应用程序的内容提供程序不是 Android SDK 的一部分。在未来的 Android 版本中,提供程序可能会更改,恕不另行通知。库存 AlarmClock 应用本身的身份可能会在未来的 Android 版本中发生变化。
  • thanx buddy... 是的,我已经提到了你提到的帖子,我考虑到 android 闹钟将会出现......但是这个项目非常酷......它有大部分我需要的东西......会检查它并在适当的时候回复......再次感谢老兄......
  • @CommonsWare 感谢马克的信息,我想我是对的,但有些客户不听。我正在考虑放弃这个想法,但不得不进行一些研究以取悦他们。再次感谢...
  • AlarmClock 应用程序公开的接口可能会改变,正如@CommonsWare 所述,但这与公开一组意图或内容提供程序的任何其他 Android 应用程序没有什么不同。您需要优雅地处理异常,但仔细设计(和大量测试)应该提供相当稳定的实现。
【解决方案2】:
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());
    }
}

使用此代码...您将获得所有详细信息。享受吧!

【讨论】:

  • 这实际上是一个很好的答案,应该被接受。这些注册表保存警报值,只是需要将它们视为 int 日期,具体取决于您对它们的处理方式。闹钟应用程序可能不存在也是如此
【解决方案3】:

出于调试目的,您可以使用“adb shell dumpsys 警报”来自控制台。

【讨论】:

    猜你喜欢
    • 2014-08-21
    • 1970-01-01
    • 1970-01-01
    • 2014-08-29
    • 2022-10-14
    • 2011-11-05
    • 2017-09-24
    • 1970-01-01
    • 2017-06-29
    相关资源
    最近更新 更多