Ярлыки для запуска Android - PullRequest
0 голосов
/ 26 мая 2010

Я сделал простое приложение для таймера. Я хочу добавить пользователю возможность создания ярлыка на домашнем экране, который будет переключать состояние приложения (время ожидания / время входа), но я не хочу, чтобы этот ярлык вообще открывал приложение на экране.

вот мой 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 на экране ничего не отображалось. У кого-нибудь есть идеи, как от этого избавиться?

Ответы [ 2 ]

4 голосов
/ 26 мая 2010

Проблема с программами запуска заключается в том, что они запускают Операции, тогда как вам нужно запустить Сервис, чтобы вы могли изменять состояние приложения в фоновом режиме. Похоже, что вы действительно хотите сделать, это сделать Widget , а не ярлык для запуска. Вы можете настроить виджет на наличие кнопки, которая запускает Сервис, который переключает объекты в фоновом режиме.

0 голосов
/ 08 сентября 2011

Вы можете "проще" сделать скрытое действие, которое будет делать то, что вы хотите!

В этом упражнении должны использоваться прозрачные темы, чтобы оно никогда не показывалось и не вызывало finish () в конце onCreate () без особых условий.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...