public static final String READ_SETTINGS_PERMISSION = "com.Android.launcher.permission.READ_SETTINGS"; public static final String INSTALL_SHORTCUT_PERMISSION = "com.android.launcher.action.INSTALL_SHORTCUT"; private static final String TAG = "WowUtils"; /**  * 创建桌面快捷方式  * @param context  * @param 点击快捷方式进入的Activity  * @param title 快捷方式显示名  * @param iconRes 快捷方式图标的resource id  */public static void createShortcut(Context context,Class activity,String title,int iconRes){     if(context == null || activity == null || isShortcutExist(context)){         return ;     }     Intent addIntent = new Intent(INSTALL_SHORTCUT_PERMISSION);     Parcelable icon = Intent.ShortcutIconResource.fromContext(context,iconRes);// 获取快捷键的图标     addIntent.putExtra("duplicate", false);     Intent myIntent = new Intent(context,activity);     addIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME,title);// 快捷方式的标题     addIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, icon);// 快捷方式的图标     addIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, myIntent);// 快捷方式的动作     context.sendBroadcast(addIntent);     return ; } public static boolean isShortcutExist(Context context) {     String shortcutTitle = getShortcutTitle(context);     Log.i(TAG, "getShortcutTitle=" + shortcutTitle);     return !TextUtils.isEmpty(shortcutTitle); } public static String getShortcutTitle(Context context){     if(context == null){         return null;     }     String appLabel = null;     try {         PackageManager pm = context.getPackageManager();         appLabel = pm.getApplicationLabel(pm.getApplicationInfo(context.getPackageName(),                         PackageManager.GET_META_DATA)).toString();     } catch (Exception e) {         return null;     }     String authority = getAuthorityFromPermission(context,READ_SETTINGS_PERMISSION);     Log.i(TAG, "getAuthorityFromPermission=" + authority);     final String uriStr = "content://" + authority + "/favorites?notify=true";     final Uri uri = Uri.parse(uriStr);     final Cursor c = context.getContentResolver().query(uri,             new String[] { "title" }, "title=?", new String[] { appLabel },             null);     if (c != null && c.getCount() > 0) {         c.moveToFirst();         do{             return c.getString(c.getColumnIndexOrThrow("title"));         }while(c.moveToNext());     }     return null; } /**  * The launcher is an Application under the Handset Manufacturer  * responsibility. The Authority is then not always  * "com.android.launcher2.settings". The Handset Manufacturer may rewrite  * its own. It can be "com.android.twlauncher" or anything else depending on  * the Java package. You need to retrieve the right authority by searching  * for a provider that declares the read/write permissions  * "com.android.launcher.permission.READ_SETTINGS" or  * "com.android.launcher.permission.WRITE_SETTINGS".  *  * @param context  * @param permission  * @return e.g. com.baidu.launcher2.settings  */public static String getAuthorityFromPermission(Context context, String permission){     if (permission == null) return null;     List<PackageInfo> packs = context.getPackageManager().getInstalledPackages(PackageManager.GET_PROVIDERS);     if (packs != null) {         for (PackageInfo pack : packs) {             ProviderInfo[] providers = pack.providers;             if (providers != null) {                 for (ProviderInfo provider : providers) {                     if (permission.equals(provider.readPermission))                         return provider.authority;                     if (permission.equals(provider.writePermission))                         return provider.authority;                 }             }         }     }     return null; }Manifest.xml添加权限:<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> <uses-permission android:name="com.android.launcher.permission.UNINSTALL_SHORTCUT" /> <uses-permission android:name="com.android.launcher.permission.READ_SETTINGS" />代码使用示例:WowUtils.createShortcut(this, MainActivity.class, getString(R.string.app_name), R.drawable.ic_launcher);



更多相关文章

  1. Android(安卓)谷歌统计
  2. Android应用程序创建桌面快捷方式
  3. Android(安卓)官方通知工具类Notification
  4. Android(安卓)Studio简单设置
  5. Android/iOS内嵌Unity开发示例
  6. Flutter下载更新App的方法示例
  7. Android标题栏TitleBar全攻略
  8. Android之——多线程断点续传下载示例
  9. android 笔记 --- Android开发中Virtual Device仿真界面对应的快

随机推荐

  1. Android 中配置adb环境变量
  2. Android中menu详解
  3. android selector下的设置背景属性值
  4. 使用GDB进行Android Native调试
  5. Android使用WebView从相册/拍照中添加图
  6. root 后的android 无线传屏(服务器端与客
  7. android沉浸式状态栏底部背景用图片代替
  8. Android之硬键盘字符映射------KeyCharac
  9. Android中am命令用法详解
  10. Android 修改U盘名称