我已經做了一個簡單的打卡/打出時鐘應用程序。我想添加用戶在主屏幕上創建快捷方式的選項,該選項將切換應用程序的狀態(超時/超時),但我不希望此快捷方式在屏幕上打開應用程序。Android啓動快捷鍵
這裏是我的setupShortcut()
private void setupShortcut() {
Intent shortcutIntent = new Intent(this, Toggle.class);
// shortcutIntent.setClassName(this, Toggle.class.getName());
shortcutIntent.putExtra(EXTRA_KEY, "ToggleShortcut");
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent();
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "ToggleShortcut");
Parcelable iconResource = Intent.ShortcutIconResource.fromContext(this, R.drawable.app_sample_code);
intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconResource);
setResult(RESULT_OK, intent);
}
Toggle.class是切換的狀態,我的活動。在清單我有它
<activity android:name=".Toggle" android:exported="true" android:theme="@android:style/Theme.Translucent.NoTitleBar">
這些設置,因爲它是我現在可以創建在主屏幕上的快捷方式,然後按它。第一次按下它時,它會啓動Toggle活動並完成它,但它也會在屏幕上打開TimeClock活動。如果我然後按下後退按鈕,我會回到家中。我現在可以按下這個快捷鍵,它將啓動切換活動並且不改變屏幕。在我添加之前:shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);它會每次打開TimeClock活動。現在這只是第一次。但是我希望它在按下切換快捷鍵時不會在屏幕上顯示任何內容。有沒有人有任何想法如何擺脫這一點?
你也可以在Activity的onCreate()方法中調用finish(),Activity不會顯示出來。對於這一點,服務將是矯枉過正的。 – 2010-05-26 00:04:16
我在切換活動中調用finish()。我也永遠不會調用setContentView();這對所有人都有效,但是我第一次按快捷鍵。我在TimeClock活動的onCreate()中放置了一個Log輸出,並發現它在推送快捷方式時沒有被調用。它只是採取已經公開的活動實例並展示它。我也試着讓setupShortcut()意圖轉到「com.timeclock.TOGGLE」,我把它作爲我的TimeClock活動的一個intent過濾器,並把一個if語句來檢查傳入意圖上的動作。 – Tim 2010-05-26 17:20:34
這個if語句在setContentView之前。它會調用finish(),但當我按下快捷鍵時,仍然會看到黑屏。 – Tim 2010-05-26 17:21:16