添加Android应用程序的快捷方式到主屏幕打开按钮点击

2022-09-05 00:27:04

我想通过按下按钮轻松将我的应用程序添加到主屏幕。因此,我在想的是我的应用程序底部的一个按钮,上面写着“添加到主屏幕”,当按下它时,它会在不关闭应用程序的情况下将快捷方式添加到主屏幕。我应该添加什么代码来做到这一点?


答案 1

发送INSTALL_SHORTCUT广播,并将生成的 Intent 作为附加内容(在本例中,结果 Intent 直接打开某些活动)。

    //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" />

答案 2

还行。。。我知道这是旧线程,但我想确保访问此线程的工程师拥有最新信息。

从 Android O 开始 - 作为后台检查限制(在本例中为隐式接收器)的一部分,com.android.launcher.action.INSTALL_SHORTCUT广播不再对您的应用产生任何影响,因为它现在是一个私有的隐式广播。

Per Android O ActivityManagerService.java :

 case "com.android.launcher.action.INSTALL_SHORTCUT":
                // As of O, we no longer support this broadcasts, even for pre-O apps.
                // Apps should now be using ShortcutManager.pinRequestShortcut().
                Log.w(TAG, "Broadcast " + action
                        + " no longer supported. It will not be delivered.");

我希望这有帮助!


推荐