Android 创建桌面快捷键
16lz
2021-01-23
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" /> |
更多相关文章
- Android 中 Intent.ACTION_PACKAGE_ADDED 之类的 broadcast 可被
- Android 分多次(每次一个)请求权限时的onRequestPermissionsResult
- Android文件权限(Linux的权限)
- 百度地图中android获取经纬度和地方名称
- android 之一键root权限 快速刷机
- android 1.6全部的权限介绍
- Android 中各种权限深入体验及详解
- android:sharedUserId权限问题
- android 已知资源名称获取资源ID