Nano Hash - криптовалюты, майнинг, программирование

Ярлыки против виджетов запуска (Android)

Мы включили ярлыки для двух экранов нашего приложения. Используя манифест, мы инициализировали действие, которое ссылается на ярлык, как показано ниже.

<activity
    android:name=".ui.shortcuts.ShortCut1"
    android:screenOrientation="portrait"
    android:icon="@drawable/shortcut1"
    android:label="@string/app_shortcut_name1"
    android:theme="@style/AppLightTheme">
       <intent-filter>
            <category android:name="android.intent.category.DEFAULT" />
            <action android:name="android.intent.action.CREATE_SHORTCUT" />
       </intent-filter>

 </activity>

Из кода я включил ярлыки следующим образом.

Intent shortcutIntent = null;
shortcutIntent = new Intent(ApplicationNekt.getContext(), ShortCut1.class);

shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Intent intent = new Intent();
intent.putExtra("duplicate", false);
intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);



intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, ApplicationNekt.getContext().getString(R.string.app_shortcut_name1));
 intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(ApplicationNekt.getContext(), R.drawable.shortcut1));

intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
ApplicationNekt.getContext().sendBroadcast(intent);

Теперь в средствах запуска Nova и Action они отображают ярлыки в разделе ярлыков со значком и текстом, которые я указал в манифесте. Если я нажму и удержу , я смогу поместить значок на главную вкладку. Сразу после этого открывается моя целевая активность. Но когда я возвращаюсь на главный экран телефона, значок ярлыка, созданный на предыдущем шаге, удаляется.

Я что-то упустил здесь?


Ответы:


1

Кевин из программы запуска Nova ответил на письмо поддержки.

Это также объясняется в другом потоке ярлык, который можно использовать в пользовательской панели запуска

В моем случае у меня есть код добавления ярлыков, а также я хочу поддержать пользователей, которые хотят добавлять ярлыки с экрана виджета Nova/Action Launcher. Поэтому я сделал следующее.

Ниже код, который я написал в файле класса ShortCut1.java. Это код активности.

public class ShortCut1 extends Activity{

@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    // This code runs when the user actually clicks and 
    // opens the shortcut. so redirect him to target screen.  
    openTargetTab(0);


    // This code is useful when called by the Nova/Action launcher's 
    // widget is clicked. So return them with icon, name and target 
    // activity. Once they receive it they will set the short cut icon on home. 
    // Note: Even when the shortcut is clicked, this result is set, 
    //   but nobody reads the response. So it should be ok. 
    Intent resIntent = getResIntent();
    setResult(RESULT_OK, resIntent);

    finish();
}

private Intent getResIntent() {

    Intent shortcutIntent = new Intent();
    // Target intent is set to this own class. So that when the user clicks on the shortcut this intent will be passed.
    Intent target = new Intent(this, ShortCut1.class);
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, target);
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, 
         Application.getContext().getString(R.string.shortcut_name));
    shortcutIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
        Intent.ShortcutIconResource.fromContext(Application.getContext(), 
                                                R.drawable.shortcut1));
    return shortcutIntent;
}

private void openHomeTab(int tabIndex) {

    // Final target screen. 
    Intent intent = new Intent(this, TargetActivity.class);
    startActivity(intent);
}
}

ПРИМЕЧАНИЕ. Я не удалял и не изменял какой-либо код в манифесте или коде добавления ярлыка. Поскольку мне нужна эта поддержка и в моем приложении, я оставил этот код как есть. Поэтому, когда пользователь нажимает «Добавить ярлык», этот код запускается. Единственное изменение, которое я сделал здесь, это то, что я назвал «Setresult» с правильным намерением, которое понятно сторонним программам запуска.

15.12.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..