如何在Google的DeskClock应用中设置闹钟的时间?

时间:2011-12-28 18:04:52

标签: android clock alarm

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

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

1 个答案:

答案 0 :(得分:6)

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

当DeskClock更新状态栏图标(带有额外的布尔值android.intent.action.ALARM_CHANGED以指示开/关)并更新您可以使用的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>