根訪問是可能的。 基本上我需要一種方法來從應用程序中讀取內容://settings/system/alarm_alert
並獲取警報的時間(或剩餘時間)。如何獲取Google DeskClock應用程序中設置的鬧鐘時間?
我發現了舊的項目android-alarm-database,但只適用於較老的鬧鐘應用程序。
根訪問是可能的。 基本上我需要一種方法來從應用程序中讀取內容://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