2019独角兽企业重金招聘Python工程师标准>>>

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);

转载于:https://my.oschina.net/oppo4545/blog/197694

Android应用程序创建桌面快捷方式相关推荐

  1. Ubuntu系统为程序创建桌面快捷方式

    为了不用每次都要进入命令行启动应用程序,为程序创建快捷方式是一个很方便的方法,尤其是你的程序需要在团队外部使用的时候. 桌面创建快捷方式一般使用.desktop为后缀的文件实现,该文件的内容格式基本要 ...

  2. Android 8.0 创建桌面快捷方式

    1. 前言:公司有个给app创建桌面快捷方式的功能.  有一天,测试来说,有款手机,点击快捷方式,无反应.  2.思考:大多数手机是好的,考虑是兼容性问题. 1)经查看,问题机是  华为mate9  ...

  3. android自动创建桌面,Android应用启动后自动创建桌面快捷方式的实现方法

    Android的开发其实是比较灵活的,其实在安装了Android应用程序之后,会在桌面上自动创建快捷方式,接下来爱站技术频道小编将会介绍Android应用启动后自动创建桌面快捷方式的实现方法给大家,有 ...

  4. Android应用启动后自动创建桌面快捷方式

    为什么80%的码农都做不了架构师?>>>    和IOS开发和Windows Phone开发相比,Android是开放的,Android上的开发也相对更加灵活,能够做很多事情.有的朋 ...

  5. android自动创建快捷方式,Android开发之生成桌面快捷方式细则(原创)

    本文已独家授权 郭霖 ( guolin_blog) 公众号发布! 申明,标题里的快捷方式不是指开发人员使用频率极高的Ctrl+C和Ctrl+V:也不是IDE里Ctrl+D.Ctrl+F等常用快捷键.这 ...

  6. android手机自动快捷方式,解析Android应用启动后自动创建桌面快捷方式的实现方法...

    要不怎么说Android特别开放呢,在Android开发中,只要发送一个广播,就可以实现这种需求了. 废话不多说,以下是封装好的一段代码. public class ShortcutUtil { pu ...

  7. [Android]为指定的应用创建桌面快捷方式

    网上一搜一大把为自己的应用创建快捷方式,但是本文的侧重点在为"指定的应用"创建桌面快捷方式.     常见的桌面快捷方式有两要素:1.应用名 2.应用图标. 指定应用图标的信息是: ...

  8. Android小技巧之创建桌面快捷方式(已适配8.0)

    前言 在某些情况下需要对应用创建桌面快捷方式,特别是在使用原生系统(4.3到8.0)运行物联网app时,往往存在二级菜单,而应用图标默认安装在二级菜单(现在国内主流手机厂商的系统都没有二级菜单了),如 ...

  9. CentOS7创建应用程序的桌面快捷方式

    CentOS7创建应用程序的桌面快捷方式 以Eclipse为例: 1. gedit /home/用户名/桌面/eclipse.desktop 2. 将下面内容粘贴进去并保存退出 [Desktop En ...

最新文章

  1. python常用指令-Pytes及Allure常用命令
  2. python官网下载步骤linux-linux下安装python
  3. 论文阅读:DENSELY CONNECTED CONVOLUTIONAL NETWORKS
  4. 数据结构实验之栈与队列七:出栈序列判定
  5. python设置路径_Python探索之修改Python搜索路径
  6. 【北航oj】(线段树取模运算)
  7. python连连看小游戏_python实现连连看游戏
  8. OpenCV与图像处理学习八——图像边缘提取(Canny检测代码)
  9. laravel 如何 new php 类,PHP实例:laravel通过创建自定义artisan make命令来新建类文件详解...
  10. shell的if和else
  11. Zigbee 学习计划——第5天——无线传输质量检测
  12. 总结---Django部分
  13. st_aggrid pip下载失败问题
  14. IDEA使用database时,连接MySQL后schemas不显示数据库名的情况
  15. 复盘首届盘古石杯全国电子数据取证大赛晋级赛write up
  16. 14款CSS3炫酷表单input输入框美化效果【附源码】
  17. 使用 CC-359 数据集进行 MRI 重建(二)
  18. 将Spring Boot应用程序绑定到Cloud Foundry中的服务的方法
  19. 高考倒计时1天 | 百度数字人“考生”度晓晓将挑战高考作文
  20. 厦大C在线实验题3 分数约简

热门文章

  1. Java_基础—try...catch的方式处理异常1
  2. 网页弹出框----播放视频
  3. JDBC初学者的basedao工具类
  4. 源码分析Android Handler是如何实现线程间通信的
  5. 表达式计算器类的设计4(面向对象的表达式计算器7)
  6. 10本最火的中台与数字化转型图书,朋友圈都在传
  7. 中央民族大学计算机考研考什么,中央民族大学电子信息专业硕士研究生入学考试初试科目考试大纲...
  8. android商品mysql_android使用mysql的方法总结
  9. 说说我在制造业大厂当了一个月程序员的感受
  10. 微软允许员工永久在家办公,远程办公时代真的要来临了吗?