如何在android上正确创建快捷方式?

时间:2018-02-11 20:05:11

标签: android shortcut

我尝试了此代码,并在清单中添加了创建快捷方式权限,但仍无法创建快捷方式。代码在主要活动中。

//设置应用程序的快捷方式             if(!getSharedPreferences(“APP_PREFERENCE”,Activity.MODE_PRIVATE).getBoolean(“IS_ICON_CREATED”,false))             {                 的setIcon();             getSharedPreferences(“APP_PREFERENCE”,Activity.MODE_PRIVATE).edit()。putBoolean(“IS_ICON_CREATED”,true).commit();             Toast.makeText(getApplicationContext(),“done”,Toast.LENGTH_LONG)。show();

        }

2 个答案:

答案 0 :(得分:0)

Android为我们提供了一个intent类com.android.launcher.action.INSTALL_SHORTCUT,可用于向主屏幕添加快捷方式。在下面的代码片段中,我们使用名称HelloWorldShortcut创建活动MainActivity的快捷方式。

首先我们需要将权限INSTALL_SHORTCUT添加到android manifest xml。

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

addShortcut()方法在主屏幕上创建一个新的快捷方式。

private void addShortcut() {
    //Adding shortcut for MainActivity 
    //on Home screen
    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, "HelloWorldShortcut");
    addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,
            Intent.ShortcutIconResource.fromContext(getApplicationContext(),
                    R.drawable.ic_launcher));

    addIntent
            .setAction("com.android.launcher.action.INSTALL_SHORTCUT");
    addIntent.putExtra("duplicate", false);  //may it's already there so don't duplicate
    getApplicationContext().sendBroadcast(addIntent);
}

注意我们如何创建保存目标活动的shortcutIntent对象。此intent对象作为EXTRA_SHORTCUT_INTENT添加到另一个intent中。

最后我们广播新的意图。这会添加一个名称为EXTRA_SHORTCUT_NAME的快捷方式,以及由EXTRA_SHORTCUT_ICON_RESOURCE定义的图标。

还要使用此代码以避免多个快捷方式:

if(!getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).getBoolean(Utils.IS_ICON_CREATED, false)){
          addShortcut();
          getSharedPreferences(Utils.APP_PREFERENCE, Activity.MODE_PRIVATE).edit().putBoolean(Utils.IS_ICON_CREATED, true);
      }

答案 1 :(得分:0)

我最终使用此代码创建快捷方式。它工作正常 如果创建了快捷方式,它还会检查snd save is preferences。在接收活动的清单中添加了与创建者启动画面相同的意图。

<h2 class="subtitle">
<a id="calendlyid" href="" onclick="iAmAttilasEvent(); Calendly.showPopupWidget('https://website.com');return false;" class="link">Book NOW</a> </h2>

然后使用此代码创建快捷方式

<activity android:name=".ShortCutActivity" 
android:label="@string/shortcut_label"> 
<intent-filter> 

    <action android:name="android.intent.action.CREATE_SHORTCUT" />
     <category android:name="android.intent.category.DEFAULT" /> 
     </intent-filter> 
     </activity>