如何获取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> 
+0

你知道如何改变这毫秒? Settings.System.getString(context.getContentResolver(),android.provider.Settings.System.NEXT_ALARM_FORMATTED) – MobileMon 2013-03-05 15:43:10

+0

DeskClock不允许您设置以毫秒为单位的时间,因此以毫秒为单位读取时间没有用。如果你的工作时间是毫秒,Calendar.getTimeInMillis()或System.currentTimeMillis()可能会更有用,这取决于你想要做什么。 – Gerrit 2013-03-06 16:45:29

+0

注 - 不再适用于棒棒糖。意图是私有的,现在他们已经删除了它的访问权限。 – 2014-11-26 13:57:05