0
所以我正在製作一個應用程序,用於偵聽Android中的屏幕開啓活動。我有一臺廣播接收器,收到Intent.ACTION_SCREEN_ON
。這個接收器然後開始一個活動。廣播接收機中的多個意圖
一切工作正常,但它啓動活動,即使因爲來電打開屏幕。
這是我的代碼。
if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)){
Intent i = new Intent(context, MainScreenActivity.class);
i.putExtras(intent);
i.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Log.e("receiver", "throwing in the lock screen");
}
我不太清楚如何檢查手機的當前狀態。 我有權讀取PHONE_STATE
,但我如何知道該行爲是否因該呼叫而被解僱?
此外,屏幕實際打開並顯示活動時有延遲。默認的鎖定屏幕短時間可見,然後自定義的屏幕出現。有什麼可以做的,以避免這種延遲?
Gaurav我認爲'ACTION_SCREEN_ON'在'PHONE_STATE'之前被觸發。你知道他們被解僱的命令嗎? – Broncha
您無法確定哪個意圖最先被觸發,您可以設置優先級爲您的意圖。你有沒有試過這個代碼,我認爲它應該工作。 – CodingRat
來自developer.android上的文檔有序廣播(使用Context.sendOrderedBroadcast發送)一次傳遞給一個接收者。當每個接收器依次執行時,它可以將結果傳播到下一個接收器,或者它可以完全中止廣播,使其不會傳遞給其他接收器。運行的訂單接收器可以通過匹配意圖過濾器的android:priority屬性進行控制;具有相同優先級的接收器將以任意順序運行。 – CodingRat