2011-12-28 74 views

回答

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以下意圖過濾器:

<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

相關問題