添加快捷方式

    技术2022-05-18  14

    1.默认的Shortcut操作 [添加] 默认安装后的应用(Launcher属性),图标都会出现在"抽屉面板"中,在里面长按并拖曳图标可以拖动到桌面,实现快捷方式的添加。 [删除] 长按桌面的图标,"抽屉面板"的小箭头会变成一个垃圾箱的图标,然后将图标拖进去就删除了。 2.对Shortcut列表进行添加/删除操作 [添加] 在默认桌面空白处长按,会弹出选择对话框,选择"Shortcut",找到要添加的应用快捷方式进行添加。 首先我们要将应用的选项添加到Shortcut列表里来,直接上代码:

    Java代码   /**     * 添加到Shortcut选项中(默认桌面上长按调出)    *    * 同时需要在manifest中为activity提供一个包含    * action="android.intent.action.CREATE_SHORTCUT"的intent-filter    */    private   void  addShortcutToOptions(){         // 创建一个默认的Intent          Intent shortcut = new  Intent();                       //快捷方式的名称          shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));         //不允许重复创建          shortcut.putExtra("duplicate"false );                             //指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer          //注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序          String appClass = this .getPackageName() +  "."  + this .getLocalClassName();         ComponentName comp = new  ComponentName( this .getPackageName(), appClass);         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, newIntent(Intent.ACTION_MAIN).setComponent(comp));         // 下面的方法与上面的效果是一样的,另一种构建形式而已    //    Intent respondIntent = new Intent(this, this.getClass());    //    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);                        //快捷方式的图标          ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this , R.drawable.icon);         shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);                       // 发送到消息队列          setResult(RESULT_OK, shortcut);   }  

     

    [删除] 应用重装/卸载后会自动删除 3.直接对Shortcut进行添加/删除操作(通过代码) [添加] 要点: 1. 给Intent指定action="com.android.launcher.INSTALL_SHORTCUT" 2. 给定义为Intent.EXTRA_SHORTCUT_INENT的Intent设置与安装时一致的action(必须要有) 3. 在AndroidManifest.xml中添加权限:com.android.launcher.permission.INSTALL_SHORTCUT

    Java代码   /**    * 为程序创建桌面快捷方式    *    * 同时需要在manifest中设置以下权限:    * <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />    */    private   void  addShortcut(){         Intent shortcut = newIntent("com.android.launcher.action.INSTALL_SHORTCUT" );                             // 快捷方式的名称          shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));         // 不允许重复创建          shortcut.putExtra("duplicate"false );                             // 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer          // 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)          String action = "com.android.action.test" ;         Intent respondIntent = new  Intent( thisthis .getClass());         respondIntent.setAction(action);         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);         // 下面的方法与上面的效果是一样的,另一种构建形式而已          // 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序    //    String appClass = this.getPackageName() + "." + this.getLocalClassName();    //    ComponentName comp = new ComponentName(this.getPackageName(), appClass);    //    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));             // 快捷方式的图标          ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this , R.drawable.icon);         shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);                             sendBroadcast(shortcut);   }  

     

    [删除] 要点: 1. 给Intent指定action="com.android.launcher.UNINSTALL_SHORTCUT" 2. 给定义为Intent.EXTRA_SHORTCUT_INENT的Intent设置与安装时一致的action(必须要有) 3. 在AndroidManifest.xml中添加权限:com.android.launcher.permission.UNINSTALL_SHORTCUT

    Java代码   /**    * 删除程序的快捷方式    *    * 同时需要在manifest中设置以下权限:    * <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />    */    private   void  delShortcut() {         Intent shortcut = newIntent("com.android.launcher.action.UNINSTALL_SHORTCUT" );                       // 快捷方式的名称          shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));            // 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer          // 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)          String action = "com.android.action.test" ;         Intent respondIntent = new  Intent( thisthis .getClass());         respondIntent.setAction(action);         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);         // 下面的方法与上面的效果是一样的,另一种构建形式而已          // 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序    //    String appClass = this.getPackageName() + "." + this.getLocalClassName();    //    ComponentName comp = new ComponentName(this.getPackageName(), appClass);    //    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));                        sendBroadcast(shortcut);   }  

     

    >> 可见添加到Shortcut列表和直接添加到桌面以及删除的操作都是大同小异的,归纳如下: 1. 对应Shortcut的Intent    1)添加到Shorcut列表时,不需要指定action    2)添加到桌面时,需指定action="com.android.launcher.action.INSTALL_SHORTCUT"    3)删除桌面Shortcut时,需要指定action="com.android.launcher.action.UNINSTALL_SHORTCUT" 2. 对应被设为Intent.EXTRA_SHORTCUT_INTENT的Intent    1)添加到Shorcut列表时,不需要指定action    2)直接添加/删除(桌面Shortcut)时,需指定一致的action(可任意) * 这里有个问题就是:如何创建非自身应用的快捷方式? 必须知道应用的包名,然后通过Context.getPackageManager()获取到PackageManager来进行具体操作,里面提供了丰富的函数来获取应用的信息。例如,获取某个应用的图标: Drawable getApplicationIcon(String packageName)


    最新回复(0)