如何获取Google DeskClock应用程序中设置的闹钟时间?
问题描述:
根访问是可能的。 基本上我需要一种方法来从应用程序中读取内容://settings/system/alarm_alert
并获取警报的时间(或剩余时间)。如何获取Google DeskClock应用程序中设置的闹钟时间?
我发现了旧的项目android-alarm-database,但只适用于较老的闹钟应用程序。
答
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以下意图过滤器:
<receiver android:name=".TestReceiver">
<intent-filter>
<action android:name="android.intent.action.ALARM_CHANGED"></action>
</intent-filter>
</receiver>
你知道如何改变这毫秒? Settings.System.getString(context.getContentResolver(),android.provider.Settings.System.NEXT_ALARM_FORMATTED) – MobileMon 2013-03-05 15:43:10
DeskClock不允许您设置以毫秒为单位的时间,因此以毫秒为单位读取时间没有用。如果你的工作时间是毫秒,Calendar.getTimeInMillis()或System.currentTimeMillis()可能会更有用,这取决于你想要做什么。 – Gerrit 2013-03-06 16:45:29
注 - 不再适用于棒棒糖。意图是私有的,现在他们已经删除了它的访问权限。 – 2014-11-26 13:57:05