[Android]为指定的应用创建桌面快捷方式
网上一搜一大把为自己的应用创建快捷方式,但是本文的侧重点在为“指定的应用”创建桌面快捷方式。
常见的桌面快捷方式有两要素:1.应用名 2.应用图标。
指定应用图标的信息是:
// pkgContext为指定应用的上下文环境,iconIdentifier为一个整数,指定应用的图标标识符 ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(pkgContext, iconIdentifier); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes);
创建第三方应用的快捷方式关键在于如何获取第三方应用的上下文环境,关键代码为:
Context pkgContext = context.createPackageContext(pkg, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE);
OK,基础知识讲完了,下面直接给代码以飨读者。
/** * @param context * 执行者。 * @params pkg 待添加快捷方式的应用包名,其值不可为null。 * @return 返回true为正常执行完毕,<br/> * 返回false为pkg值为null或者找不到该应用或者该应用无用于Launch的MainActivity 。 * @author sodino * */public boolean addShortcut(Context context, String pkg) {// 快捷方式名 String title = "unknown";// MainActivity完整名 String mainAct = null;// 应用图标标识 int iconIdentifier = 0;// 根据包名寻找MainActivity PackageManager pkgMag = context.getPackageManager(); Intent queryIntent = new Intent(Intent.ACTION_MAIN, null); queryIntent.addCategory(Intent.CATEGORY_LAUNCHER); List<ResolveInfo> list = pkgMag.queryIntentActivities(queryIntent, PackageManager.GET_ACTIVITIES);for (int i = 0; i < list.size(); i++) { ResolveInfo info = list.get(i);if (info.activityInfo.packageName.equals(pkg)) { title = info.loadLabel(pkgMag).toString(); mainAct = info.activityInfo.name; iconIdentifier = info.activityInfo.applicationInfo.icon;break; } }if (mainAct == null) {// 没有启动类 return false; } Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");// 快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, title);//不允许重复创建// shortcut.putExtra("duplicate", false); ComponentName comp = new ComponentName(pkg, mainAct); shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent(Intent.ACTION_MAIN).setComponent(comp));// 快捷方式的图标 Context pkgContext = null;if (context.getPackageName().equals(pkg)) { pkgContext = context; } else {// 创建第三方应用的上下文环境,为的是能够根据该应用的图标标识符寻找到图标文件。 try { pkgContext = context.createPackageContext(pkg, Context.CONTEXT_IGNORE_SECURITY | Context.CONTEXT_INCLUDE_CODE); } catch (NameNotFoundException e) { e.printStackTrace(); } }if (pkgContext != null) { ShortcutIconResource iconRes = Intent.ShortcutIconResource.fromContext(pkgContext, iconIdentifier); shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE, iconRes); }// 发送广播,让接收者创建快捷方式// 需权限<uses-permission// android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> context.sendBroadcast(shortcut);return true; }
转载于:https://www.cnblogs.com/error404/archive/2011/12/23/2299333.html
[Android]为指定的应用创建桌面快捷方式相关推荐
- android自动创建桌面,Android应用启动后自动创建桌面快捷方式的实现方法
Android的开发其实是比较灵活的,其实在安装了Android应用程序之后,会在桌面上自动创建快捷方式,接下来爱站技术频道小编将会介绍Android应用启动后自动创建桌面快捷方式的实现方法给大家,有 ...
- Android应用启动后自动创建桌面快捷方式
为什么80%的码农都做不了架构师?>>> 和IOS开发和Windows Phone开发相比,Android是开放的,Android上的开发也相对更加灵活,能够做很多事情.有的朋 ...
- android手机自动快捷方式,解析Android应用启动后自动创建桌面快捷方式的实现方法...
要不怎么说Android特别开放呢,在Android开发中,只要发送一个广播,就可以实现这种需求了. 废话不多说,以下是封装好的一段代码. public class ShortcutUtil { pu ...
- Android应用程序创建桌面快捷方式
2019独角兽企业重金招聘Python工程师标准>>> public static final String READ_SETTINGS_PERMISSION = "com ...
- Android小技巧之创建桌面快捷方式(已适配8.0)
前言 在某些情况下需要对应用创建桌面快捷方式,特别是在使用原生系统(4.3到8.0)运行物联网app时,往往存在二级菜单,而应用图标默认安装在二级菜单(现在国内主流手机厂商的系统都没有二级菜单了),如 ...
- Android 8.0 创建桌面快捷方式
1. 前言:公司有个给app创建桌面快捷方式的功能. 有一天,测试来说,有款手机,点击快捷方式,无反应. 2.思考:大多数手机是好的,考虑是兼容性问题. 1)经查看,问题机是 华为mate9 ...
- 关于如何在启动时创建桌面快捷方式
现在Android 手机系统一般是定制加原生,一般定制就只有一层桌面,而原始和有一些定制系统是抽屉式桌面,这样就有一个需求,在安装应用的时候,需要在桌面上创建一个快捷方式. 其实很简单 . 第一步在启 ...
- Ubuntu系统为程序创建桌面快捷方式
为了不用每次都要进入命令行启动应用程序,为程序创建快捷方式是一个很方便的方法,尤其是你的程序需要在团队外部使用的时候. 桌面创建快捷方式一般使用.desktop为后缀的文件实现,该文件的内容格式基本要 ...
- ubuntu clion 创建桌面快捷方式
ubuntu clion 创建桌面快捷方式 首先在终端下输入 cd /usr/share/applications/ 进入applications目录下,建立一个clion.desktop文件 sud ...
最新文章
- 通俗理解并行性和并发性的区别
- ThinkingInJava_3
- [全]php-redis函数使用
- Linux内核调试方法总结之sysrq
- mysql template sql_SpringBoot-JdbcTemplates-MySQL
- leetcode 221. Maximal Square 求一个数组中由1组成的最大的正方形面积 ---------- java...
- 图书馆管理系统mysql的创建_简单的图书馆管理系统数据库设计
- 爬取链家任意城市租房数据(北京朝阳)
- 全民一起玩Python提高篇第四课:深入数据类型与语法细节(下)
- 假定网络中的路由器B的路由表有如下的项目(这三列分别表示“目的网络”、“距离”和“下一跳路由器”):
- 白色在html中怎么写,html如何设置文字颜色白色
- uni-app打包后ios证书申请和ios应用市场发布(windows主机发布)
- CentOS7.5安装Oracle19c
- 如何写简单的linux脚本
- CPU 上下文切换是什么意思?(下)
- Vue+Element 实现订单列表【管理端】02
- Django框架初体验(二)
- android 调用搜狗地图api,搜狗地图API - Sogou Maps JavaScript API
- 6612345免费网页打印浏览器 本软件完全免费,这是一个集网页打印、读取身份证、拍照、读取串口等功能为一体的超级浏览器。
- vue-cli 初始化创建 vue2.9.6 项目路由守卫、封装axios、vuex
热门文章
- 《Shell脚本学习指南》第一章 背景知识
- javascript”面向对象编程”- 1万物皆对象
- python中并发编程基础1
- 定时器 Quartz
- 算法知识点总结——算法分析基础
- java支持泛型_Java自学-泛型 支持泛型的类
- Win64 驱动内核编程-13.回调监控模块加载
- hdu3756 三分求最小圆锥
- 【Linux 内核】进程管理 ( Linux 中进程的 CPU 资源调度 | 进程生命周期 | 创建状态 | 就绪状态 | 执行状态 | 阻塞状态 | 终止状态 | 进程生命周期之间的转换 )
- 【开发环境】StarUML 工具 ( 下载软件 | StarUML 安装 | StarUML 创建工程 )