在主屏幕上创建 android 个应用程序快捷方式

creating android app shortcut on the home screen

我需要在主屏幕上为我的应用添加快捷方式(以编程方式)。 我知道应用商店默认执行此操作,但首先,该应用不会出现在 google 应用商店中。 找了很多,翻来覆去发现基本都是一样的代码行,好像对我没用。

我使用的代码: 在清单中:

<activity android:name=".MainScreenActivity" android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

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

在 onCreate 方法中,我调用了执行以下操作的函数:

    private boolean createShortcut()
{
    //create shortcut intent
    Intent shortcutIntent = new Intent(getApplicationContext(),MainScreenActivity.class);
    shortcutIntent.setAction(Intent.ACTION_MAIN);

    //create intent to add and define the shortcut
    Intent addingIntent = new Intent();
    addingIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT,shortcutIntent);
    addingIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,"SenseGuard");
    addingIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(getApplicationContext(),R.drawable.peak_detection_icon));
    addingIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");

    getApplicationContext().sendBroadcast(addingIntent);
}

我尝试将 "getApplicationContext()" 切换为 "this"。 我尝试使用实际的平板电脑和模拟器,但无法正常工作。

这样做:

第 1 步:

更新您的 manifest.xml :

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

第 2 步:

在您的 MainActivity.java 中创建 addShortcut() 方法并在其块中放置以下代码:

private void addShourcut(){
  Intent shortCutIntent = new Intent(getApplicationContext() ,MainActivity.class);

  shortCutIntent.setAction(Intent.ACTION_MAIN);

  Intent addIntent = new Intent();

  addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT , shortCutIntent);
  addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME , "Convertor");
  addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE ,
    Intent.ShortcutIconResource.fromContext(getApplicationContext() , R.mipmap.ic_launcher));
  addIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");
  addIntent.putExtra("duplicate" , false);
  getApplicationContext().sendBroadcast(addIntent);

}

第三步:

为要创建快捷方式的视图设置 onClickListener :

img_pin = (ImageView) findViewById(R.id.img_pin);
img_pin.setOnClickListener(new View.OnClickListener() {
  @Override
  public void onClick(View v) {

    addShourcut();
    Toast.makeText(MainActivity.this, "shortcut created !", Toast.LENGTH_SHORT).show();

  }
});

这对我有用... 快乐编码...:)

该代码不能保证有效。该广播也由 ShortcutManagerCompat 发送(您可能应该使用它而不是手动发送广播)。

但是,这样做有两个问题。

  1. 不保证您的默认启动器会收听此广播。例如,Nova Launcher 默认禁用此行为。其他启动器甚至可能根本不会监听该操作。

  2. 在 Android Oreo (26) 及更高版本上,这不会像您期望的那样工作(阅读关于我链接的方法的评论以获取更多详细信息)。

您仍然可以使用此逻辑并希望它适用于您的某些用户,但请记住,许多默认启动器甚至不再有应用程序抽屉,因此添加快捷方式可能会给您的用户带来重复的图标。另外,我知道,至少对我来说,我的主屏幕是按照我想要的方式组织的,如果我安装了一个应用程序,它会把自己添加到我的主屏幕上真的很烦人。

如果您正在使用默认的 AOSP 启动器(或关闭的分支),但是它不起作用,请确保将其添加到您的清单中:

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