测试环境为Adnroid 2.1以上。

第一步:AndroidManifest.xml 权限配置:

添加快捷方式权限:

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

验证快捷方式是否存在权限:
<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />

删除快捷方式权限:
<uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" />

代码:

 1 public class ShortCutSample { 2     /** 3     * 添加快捷方式 4     * */ 5     public void creatShortCut(Activity activity,String shortcutName,int resourceId) 6     { 7         Intent intent = new Intent();  8         intent.setClass(activity, activity.getClass());   9         /*以下两句是为了在卸载应用的时候同时删除桌面快捷方式*/10         intent.setAction("android.intent.action.MAIN");  11         intent.addCategory("android.intent.category.LAUNCHER");  12         13         Intent shortcutintent = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");14          15          //不允许重复创建16          shortcutintent.putExtra("duplicate", false);17          //需要现实的名称18          shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_NAME, shortcutName);19          //快捷图片20          Parcelable icon = Intent.ShortcutIconResource.fromContext(activity.getApplicationContext(), resourceId);21          shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);22          //点击快捷图片,运行的程序主入口23          shortcutintent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, intent);24          //发送广播。OK25          activity.sendBroadcast(shortcutintent);26     }27     /**28     * 删除快捷方式29     * */30     public void deleteShortCut(Activity activity,String shortcutName)31     {32         Intent shortcut = new Intent("com.android.launcher.action.UNINSTALL_SHORTCUT");  33         //快捷方式的名称  34         shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,shortcutName);  35         //在网上看到到的基本都是一下几句,测试的时候发现并不能删除快捷方式。36         //String appClass = activity.getPackageName()+"."+ activity.getLocalClassName();  37         //ComponentName comp = new ComponentName( activity.getPackageName(), appClass);  38         //shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));   39         /**改成以下方式能够成功删除,估计是删除和创建需要对应才能找到快捷方式并成功删除**/40         Intent intent = new Intent(); 41         intent.setClass(activity, activity.getClass());  42         intent.setAction("android.intent.action.MAIN");  43         intent.addCategory("android.intent.category.LAUNCHER");  44         shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,intent);  45         activity.sendBroadcast(shortcut);          46     }47     /**48     * 判断是否存在快捷方式49     * */50     public boolean hasShortcut(Activity activity,String shortcutName)51     {52         String url = ""; 53         int systemversion = Integer.parseInt(android.os.Build.VERSION.SDK);54         /*大于8的时候在com.android.launcher2.settings 里查询(未测试)*/55         if(systemversion < 8){ 56               url = "content://com.android.launcher.settings/favorites?notify=true"; 57         }else{ 58             url = "content://com.android.launcher2.settings/favorites?notify=true"; 59         } 60         ContentResolver resolver = activity.getContentResolver(); 61         Cursor cursor = resolver.query(Uri.parse(url), null, "title=?",new String[] {shortcutName}, null); 62         if (cursor != null && cursor.moveToFirst()) { 63                 cursor.close(); 64                 return true; 65         } 66         return false; 67     }68 }

调用测试代码:

   public class mainActivity extends Activity {    /** Called when the activity is first created. */    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        ShortCutSample sample =new ShortCutSample();        String shortcutName=getString(R.string.app_name);                if(sample.hasShortcut(this, shortcutName))        sample.deleteShortCut(this,shortcutName);        else        sample.creatShortCut(this,shortcutName,R.drawable.icon);            }}

在网上找了很久都是一样的代码,删除那块搞了一个下午才弄好,其实很简单的东东。

第一次发文章,Adnroid新人。多多交流和指导呀。呵呵。

更多相关文章

  1. android 源码下载、编译和测试
  2. Android(安卓)android 6.0权限校验及版本兼容问题
  3. android 单元测试之dialog测试链接整理
  4. android imageswitcher gallery 根据数据库内图片名字进行查看/
  5. Android(安卓)读取一个已经安装的包的权限
  6. android中的短信操作
  7. android 去掉ScrollVIew拉到尽头时再拉的阴影效果
  8. Android实现内录
  9. Android实现简单字符驱动程序及测试

随机推荐

  1. android——json解析
  2. HTC Kaiser 编译Android Kernel zImage
  3. android中ProgressDialog与ProgressBar的
  4. Android 换肤
  5. Scala&Android下的开发trait经验分享
  6. unity安卓多个sdk合并
  7. Android(安卓)4.2 BT系统之蓝牙关闭过程
  8. 《第一行代码Android》阅读笔记
  9. 安卓学习(初)第三章(2)(《第一行代码》)
  10. Android应用程序中Manifest.java文件的介