Как передать данные с помощью ярлыка в Android

Я пытаюсь передать данные с помощью ярлыка, который создается, когда пользователь нажимает кнопку. Таким образом, когда пользователь запускает приложение через этот конкретный ярлык, MainActivity получает эти данные и принимает решение по этим данным. Например, я хочу передать URL-адрес веб-сайта. Если пользователь нажимает кнопку 1, URL-адрес для этого ярлыка будет «http://expample1.com», а при нажатии кнопки 2 будет создан новый ярлык со вторым URL-адресом «http://expample2.com».

Я просмотрел другой вопрос, но они только о создании ярлыка. Другой метод, с которым я столкнулся, - это использование ShortcutManager, но он поддерживает только API level 25, описанный выше. Это код для создания ярлыка, который я написал. Как теперь добавить в него данные для использования?

public void onBtnSecondShortCutCreate(View view) {
    Intent shortcutIntent = new Intent(getApplicationContext(), SecondActivity.class);
    shortcutIntent.setAction(Intent.ACTION_MAIN);
    Intent addIntent = new Intent();
    addIntent.putExtra("SecondMessage","Second Activity");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "beSpider Second app");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.logo));
    addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    getApplicationContext().sendBroadcast(addIntent);
}

проверьте это stackoverflow.com/questions/40446733/…

giveJob 10.07.2018 13:57

Заданный вами вопрос касается использования ShortcutManager, минимальная поддержка которого соответствует уровню API 25, а минимальный уровень API моего приложения - 15.

Muhammad Abdullah 10.07.2018 19:10
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
2
329
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Что ж, этот API был добавлен в API уровня 1. Даем вам пример использования:

AndroidManifest.xml

<?xml version = "1.0" encoding = "utf-8"?>
<manifest xmlns:android = "http://schemas.android.com/apk/res/android"
    xmlns:tools = "http://schemas.android.com/tools"
    package = "exploitrme.shortcuttest">

    <uses-permission android:name = "com.android.launcher.permission.INSTALL_SHORTCUT" />
    <uses-permission android:name = "com.android.launcher.permission.UNINSTALL_SHORTCUT" />

    <application
        android:allowBackup = "false"
        android:icon = "@mipmap/ic_launcher"
        android:label = "@string/app_name"
        android:roundIcon = "@mipmap/ic_launcher_round"
        android:supportsRtl = "true"
        android:theme = "@style/AppTheme"
        tools:ignore = "GoogleAppIndexingWarning">
        <activity
            android:name = ".MainActivity"
            android:exported = "true">
            <intent-filter>
                <action android:name = "android.intent.action.MAIN" />

                <category android:name = "android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

MainActivity.class

package exploitrme.shortcuttest;

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.widget.Toast;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        if (getIntent().getIntExtra("toe", 501) != 1123) {
            addShortcut();
        }else{
            Toast.makeText(getApplicationContext(),"Started From Shortcut",Toast.LENGTH_LONG).show();
        }
    }

    void addShortcut() {
        Intent shortcutIntent = new Intent(getApplicationContext(), MainActivity.class);
        shortcutIntent.setAction(Intent.ACTION_MAIN);
        shortcutIntent.putExtra("toe", 1123);

        Intent addIntent = new Intent();
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "SAMPLE SHORTCUT!!");
        addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.ic_ac_unit_black_24dp));
        addIntent.putExtra("duplicate", false);
        addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
        getApplicationContext().sendBroadcast(addIntent);

    }
}

[РЕДАКТИРОВАТЬ]: обновлено примером приложения, которое я только что создал, потому что предыдущий ответ был вам непонятен.

Это не работает. Это не создание значка. Я обновил вопрос и добавил написанный мной код с помощью другого вопроса. Пожалуйста, теперь помогите мне добавить в него данные.

Muhammad Abdullah 10.07.2018 19:07

Действительно? Пожалуйста, проверьте это: youtube.com/watch?v=_JbEHQQVmrs

exploitr 11.07.2018 06:45

Я обновил код только что созданным образцом приложения и ПРОСТО ПРОВЕРИЛ его на Android 4.4, посмотрите видео, там все работает нормально.

exploitr 11.07.2018 06:49

Вы просто копируете и вставляете приведенный выше код и сначала проверяете, работает ли он. Это универсальный процесс, который должен работать на устройстве Kitkat, если вы не играли с его ОС.

exploitr 11.07.2018 06:50

Я здесь ради этого, нет, спасибо. Для любой помощи не стесняйтесь спрашивать снова

exploitr 11.07.2018 13:08

Другие вопросы по теме