android - 如何获取 Google DeskClock 应用程序中设置的闹钟时间?

标签 android clock alarm

可以进行根访问。 基本上我需要一种方法来从应用程序读取内容://settings/system/alarm_alert 并获取警报的时间(或剩余时间)。

我找到了旧项目 android-alarm-database,但它只适用于旧的闹钟应用程序。

最佳答案

DeskClock 应用程序(取代了旧的 AlarmClock 应用程序)使用警报管理器设置警报。不幸的是,除非您知道创建它的 PendingIntent,否则无法从警报管理器中读取现有警报。 DeskClock 将这些 PendingIntents 以及其他警报信息存储在内部数据库中。但是,还有另一种方法可以发现上次设置或删除闹钟的时间:

DeskClock 在更新状态栏图标时发出一个名为 android.intent.action.ALARM_CHANGED 的广播 Intent (带有额外的 bool 值 alarmSet 以指示开/关)并更新您可以使用以下广播接收器接收的 Systems.Settings.NEXT_ALARM_FORMATTED:

private static final String tag = "TestReceiver"; 
@Override
public void onReceive(Context context, Intent intent) 
{
    Log.d(tag, "intent=" + intent);
    Boolean message = intent.getBooleanExtra("alarmSet",false);
    Log.d(tag, "alarmSet: " + message);
    Log.d(tag, "next alarm: " + Settings.System.getString(context.getContentResolver(),android.provider.Settings.System.NEXT_ALARM_FORMATTED));    
}

并在您的 AndroidManifest.xml 中使用以下 Intent 过滤器:

<receiver android:name=".TestReceiver">
    <intent-filter>
        <action android:name="android.intent.action.ALARM_CHANGED"></action>
    </intent-filter>
</receiver>

关于android - 如何获取 Google DeskClock 应用程序中设置的闹钟时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8659549/

相关文章:

java - 为多重警报添加数据库值

java - 用户通过Android中的任何第三方应用程序(CC Cleaner或Kill应用程序)清理应用程序后是否可以重新启动后台服务?

java - 无法在 Android App 中实例化类

android - ListView 或 2 个 ListView 中的 GridView 更好?

android - 异步任务 < Android 3.0

android - 找不到变量 FlatList 或 ListView

python - 在 python 中编程时钟时,如何允许用户输入自己的当前时间值?

android - 如何设置即使我重启我的安卓手机也会响起的闹钟?

android - 更改自定义 Android Wear 表盘上电池图标的位置

javascript - 检查模拟时钟的指针位置是否正确