Вопрос по java, android – Добавить ярлык для приложения Android На домашний экран При нажатии кнопки

10

Я хочу упростить добавление своего приложения на домашний экран, нажав кнопку. То, что я думаю, - это кнопка в нижней части моего приложения с надписью & quot; Добавить на главный экран & quot; и когда она нажата, она добавляет ярлык на домашний экран, не закрывая приложение. какой код я должен добавить, чтобы сделать это?

Ваш Ответ

2   ответа
25

ерением как дополнительным (в этом случае результатом намерения является непосредственное открытие какого-либо действия).

    //where this is a context (e.g. your current activity)
    final Intent shortcutIntent = new Intent(this, SomeActivity.class);

    final Intent intent = new Intent();
    intent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);
    // Sets the custom shortcut's title
    intent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));
    // Set the custom shortcut icon
    intent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, Intent.ShortcutIconResource.fromContext(this, R.drawable.icon));
    // add the shortcut
    intent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    sendBroadcast(intent);

Вам также нужно это разрешение в своем манифесте:

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />
Так как вы не можете изменить ярлык, это будет невозможно. volkersfreunde
В Android O (API 26) вы можете создатьShortcutInfo и попросить его прикрепить к домашнему экрану. Также есть метод поддержки библиотекиShortcutManagerCompat.requestPinShortcut который перезванивает на этоcom.android.launcher.action.INSTALL_SHORTCUT трансляция на старых платформах. К сожалению, документ не упоминает требование разрешения манифеста. Developer.android.com / ссылки / Android / поддержка / v4 / содержание / пм / ..., android.support.v4.content.pm.ShortcutInfoCompat, android.content.IntentSender) rockgecko
Спасибо за ваше решение. Он отлично работает для меня. Но у меня есть другая проблема. Мое приложение поддерживает несколько языков. Поэтому, когда я меняю язык телефона в настройках, имя моего приложения обновляется в лаунчере. Но имя приложения не обновляется до нового языка на главном экране. Нужно ли добавить что-то еще для этого? Спасибо за чтение. Sushil
Превосходно. Требуется разрешение в манифесте. Brent Faust
Я заметил странную вещь: при использовании этого кода я всегда получаю метод onCreate, вызываемый для активности приложения, когда я нажимаю значок приложения на панели запуска. Это происходит даже в случае нажатия кнопки «Домой» и последующего открытия приложения из панели запуска. Как придешь android developer
5

вы должны сделать так, чтобы ланчер мог получать трансляцию:

 <!-- Intent received used to install shortcuts from other applications -->
    <receiver
        android:name="com.android.launcher2.InstallShortcutReceiver"
        android:permission="com.android.launcher.permission.INSTALL_SHORTCUT">
        <intent-filter>
            <action android:name="com.android.launcher.action.INSTALL_SHORTCUT"/>
        </intent-filter>
    </receiver>

Затем добавьте разрешение в manifest.xml

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

Наконец, создайте функцию и вызывайте ее при нажатии кнопки:

public void createShortCut(){
    // a Intent to create a shortCut
    Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");
    //repeat to create is forbidden
    shortcutintent.putExtra("duplicate", false);
    //set the name of shortCut
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.shortcutname));
    //set icon
    Parcelable icon = Intent.ShortcutIconResource.fromContext(getApplicationContext(), R.drawable.icon);
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);
    //set the application to lunch when you click the icon
    shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(getApplicationContext() , EnterActivity.class));
    //sendBroadcast,done
    sendBroadcast(shortcutintent);
}

делай это так

button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            createShortCut();
        }
    });
так в результате должен быть третий раздел? CreeperHunter
Да, вам просто нужно сделать так: public void onClick (View v) {createShortCut (); } Laolizi

Похожие вопросы