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

bqucvtff  于 2023-05-05  发布在  Android
关注(0)|答案(2)|浏览(269)

我需要在主屏幕上为我的应用添加快捷方式(以编程方式)。我知道app store默认是这样做的,但首先,这个应用程序不会出现在google app store上。我搜索了很多,一遍又一遍地发现基本上相同的代码行,但它似乎不适合我。
我使用的代码:在manifest中:

<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”。我尝试了一个实际的平板电脑和模拟器,但我不能让它工作.

30byixjq

30byixjq1#

这样做:

第一步:

更新您的manifest.xml:

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

第二步:

在你的www.example.com中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();

  }
});

这对我很有效。。happy codinngggg...:)

osh3o9ms

osh3o9ms2#

这个代码不能保证有效。该广播也由ShortcutManagerCompat发送(您可能应该使用它,而不是手动发送广播)。
然而,这有两个问题。
1.您的默认启动器不能保证侦听此广播。例如,Nova Launcher默认情况下禁用此行为。其他发射器甚至可能根本不监听该动作。
1.在Android Oreo(26)及以上版本上,这不会像你期望的那样工作(阅读我链接的方法的评论以了解更多细节)。
你仍然可以使用这种逻辑,并希望它适用于你的一些用户,但请记住,许多默认的启动器甚至不再有应用程序抽屉,所以添加快捷方式可能会给予你的用户重复的图标。而且,我知道,至少对我来说,我有我的主屏幕组织我想要的,如果我安装一个应用程序,它会真的很烦人,它添加到我的主屏幕。
如果你 * 正在 * 使用默认的AOSP启动器(或关闭分支),但是,它不工作,请确保将以下内容添加到你的清单:

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

相关问题