Я сделал простой удар в/пробой времени. Я хочу добавить пользователю возможность сделать ярлык на главном экране, который будет переключать состояние приложения (время/время), но я не хочу, чтобы этот ярлык открывал приложение на экране вообще.Ярлыки для запуска Launcher для 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 на экране. Если я тогда нажму кнопку «Назад», я вернусь домой. Теперь я могу нажать этот ярлык, и он запустит действие Toggle и не изменит экран. Прежде чем я добавил: shortcutIntent.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP); Каждый раз он будет открывать активность TimeClock. Теперь это только первый раз. Но я хочу, чтобы он никогда ничего не показывал на экране, когда нажата клавиша Toggle. Кто-нибудь знает, как избавиться от этого?
Вы также можете просто вызвать функцию finish() в методе onCreate() Activity, Activity не будет отображаться. Для этого услуга будет излишней. –
Я вызываю finish() в Toggle Activity. Я также никогда не называю setContentView(); Это работает для всех, но в первый раз я нажимаю ярлык. Я помещал вывод журнала в onCreate() активности TimeClock и обнаружил, что он не вызывается при нажатии на ярлык. Он просто принимает уже открытый экземпляр деятельности и показывает ее. Я также попытался сделать намерение setupShortcut() перейти к «com.timeclock.TOGGLE». Я поместил это как фильтр намерений в свою активность TimeClock и поместил оператор if, чтобы проверить действие на входящем намерении. – Tim
Этот оператор if перед setContentView. И он вызывает finish(), но я все равно получаю черную вспышку экрана, когда я нажимаю ярлык. – Tim