1,判断是否已经创建了快捷方式(在某些机型中需要判断)

1 2 3 4 5 6 7 8 9 10 11 12 13 private boolean hasShortcut() { boolean isInstallShortcut = false ; final ContentResolver cr = activity.getContentResolver(); final String AUTHORITY = "com.android.launcher.settings" ; final Uri CONTENT_URI = Uri.parse( "content://" +AUTHORITY + "/favorites?notify=true" ); Cursor c = cr.query(CONTENT_URI, new String[] { "title" , "iconResource" }, "title=?" , new String[] {mapViewActivity.getString(R.string.app_name).trim()}, null ); if (c!= null && c.getCount()> 0 ){ isInstallShortcut = true ; } return isInstallShortcut ; }

2,创建

1
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 /** * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent( "com.android.launcher.action.INSTALL_SHORTCUT" ); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); shortcut.putExtra( "duplicate" , false ); //不允许重复创建 /****************************此方法已失效*************************/ //ComponentName comp = new ComponentName(this.getPackageName(), "."+this.getLocalClassName()); //shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp));         /******************************end*******************************/      Intent shortcutIntent = new Intent(Intent.ACTION_MAIN);      shortcutIntent.setClassName( this , this .getClass().getName());      shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent); //快捷方式的图标 ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext( this , R.drawable.icon); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); sendBroadcast(shortcut); }

  

3, 删除

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 <strong> /** * 删除程序的快捷方式 */ private void delShortcut(){ Intent shortcut = new Intent( "com.android.launcher.action.UNINSTALL_SHORTCUT" ); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, getString(R.string.app_name)); String appClass = this .getPackageName() + "." + this .getLocalClassName(); ComponentName comp = new ComponentName( this .getPackageName(), appClass); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(Intent.ACTION_MAIN).setComponent(comp)); sendBroadcast(shortcut); } </strong>

3, 声明权限

在AndroidManifest.xml 文件中声明 创建和删除快捷方式时声明权限

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

更多相关文章

  1. Android 中 Intent.ACTION_PACKAGE_ADDED 之类的 broadcast 可被
  2. Android 分多次(每次一个)请求权限时的onRequestPermissionsResult
  3. Android文件权限(Linux的权限)
  4. 百度地图中android获取经纬度和地方名称
  5. android 之一键root权限 快速刷机
  6. android 1.6全部的权限介绍
  7. Android 中各种权限深入体验及详解
  8. android:sharedUserId权限问题
  9. android 已知资源名称获取资源ID

随机推荐

  1. js流程控制/方法简化/函数参数过多过少处
  2. C++实现AVL树的基本操作指南
  3. JavaScript展开运算符和剩余运算符的区别
  4. JavaScript仿京东放大镜特效
  5. JavaScript函数this指向问题详解
  6. Python教程之pytest命令行方式运行用例
  7. laravel_day2
  8. “您要访问的网站包含恶意软件” 怎么解
  9. javascript中的闭包,访问器属性与类的创
  10. JS流程控制和模板字面量及模板函数的学习