添加快捷方式

1.默认的Shortcut操作
[添加]
默认安装后的应用(Launcher属性),图标都会出现在"抽屉面板"中,在里面长按并拖曳图标可以拖动到桌面,实现快捷方式的添加。

[删除]
长按桌面的图标,"抽屉面板"的小箭头会变成一个垃圾箱的图标,然后将图标拖进去就删除了。

2.对Shortcut列表进行添加/删除操作
[添加]
在默认桌面空白处长按,会弹出选择对话框,选择"Shortcut",找到要添加的应用快捷方式进行添加。

首先我们要将应用的选项添加到Shortcut列表里来,直接上代码:

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

 

[删除]
应用重装/卸载后会自动删除

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代码   收藏代码
  1. /**  
  2.  * 为程序创建桌面快捷方式  
  3.  *  
  4.  * 同时需要在manifest中设置以下权限:  
  5.  * <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" />  
  6.  */   
  7. private   void  addShortcut(){  
  8.       Intent shortcut = newIntent("com.android.launcher.action.INSTALL_SHORTCUT" );  
  9.                    
  10.       // 快捷方式的名称   
  11.       shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));  
  12.       // 不允许重复创建   
  13.       shortcut.putExtra("duplicate"false );  
  14.                    
  15.       // 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer   
  16.       // 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)   
  17.       String action = "com.android.action.test" ;  
  18.       Intent respondIntent = new  Intent( thisthis .getClass());  
  19.       respondIntent.setAction(action);  
  20.       shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);  
  21.       // 下面的方法与上面的效果是一样的,另一种构建形式而已   
  22.       // 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序   
  23. //    String appClass = this.getPackageName() + "." + this.getLocalClassName();   
  24. //    ComponentName comp = new ComponentName(this.getPackageName(), appClass);   
  25. //    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));   
  26.   
  27.       // 快捷方式的图标   
  28.       ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(this , R.drawable.icon);  
  29.       shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);  
  30.                    
  31.       sendBroadcast(shortcut);  
  32. }  

 

[删除]
要点:
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代码   收藏代码
  1. /**  
  2.  * 删除程序的快捷方式  
  3.  *  
  4.  * 同时需要在manifest中设置以下权限:  
  5.  * <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />  
  6.  */   
  7. private   void  delShortcut() {  
  8.       Intent shortcut = newIntent("com.android.launcher.action.UNINSTALL_SHORTCUT" );  
  9.              
  10.       // 快捷方式的名称   
  11.       shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name));  
  12.   
  13.       // 指定当前的Activity为快捷方式启动的对象: 如 com.everest.video.VideoPlayer   
  14.       // 这里必须为Intent设置一个action,可以任意(但安装和卸载时该参数必须一致)   
  15.       String action = "com.android.action.test" ;  
  16.       Intent respondIntent = new  Intent( thisthis .getClass());  
  17.       respondIntent.setAction(action);  
  18.       shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, respondIntent);  
  19.       // 下面的方法与上面的效果是一样的,另一种构建形式而已   
  20.       // 注意: ComponentName的第二个参数必须加上点号(.),否则快捷方式无法启动相应程序   
  21. //    String appClass = this.getPackageName() + "." + this.getLocalClassName();   
  22. //    ComponentName comp = new ComponentName(this.getPackageName(), appClass);   
  23. //    shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(action).setComponent(comp));   
  24.              
  25.       sendBroadcast(shortcut);  
  26. }  

 

>> 可见添加到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)

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值