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

本文介绍了如何在Android应用中生成桌面快捷方式,包括所需权限、创建快捷方式的代码示例以及Android 7.1和8.0系统中的变化。详细解释了ShortcutManager的使用,同时提醒了在不同Android版本中创建快捷方式的注意事项。
摘要由CSDN通过智能技术生成

本文已独家授权 郭霖 ( guolin_blog) 公众号发布!

申明,标题里的快捷方式不是指开发人员使用频率极高的Ctrl+C和Ctrl+V;也不是IDE里Ctrl+D、Ctrl+F等常用快捷键。这里的快捷键,是Android应用生成桌面快捷方式。

试想,有一Windows用户想进入D盘——my文件夹里面的子文件去找文件(因藏了些晦涩资源所以层级较深)。那么这位少侠更加便利省力的操作是:点击选中文件夹——右键:发送到——桌面快捷方式,即可帮他将快捷方式生成到桌面。该用户下次想使用这个文件夹,直接点击桌面上的快捷方式即可。好处在于,用户可以快速定位到某一应用具体的功能、干净利落。

当然,谷歌Android团队也考虑了这一点,给我们设计了原生API,方便我们开发人员更加便利的(Ctrl+C、V)生成桌面快捷方式。这样做的好处我想有以下几点,首先,提高了用户留存率,试想一个APP通过某种媒介生成了2个icon,这样是很容易吸引人的,因为生成桌面快捷方式的icon以及点击事件都是代码可控的,比如你的快捷方式的icon是一个萝莉或者御姐;正太或是直男?毕竟图片总有人会喜欢的嘛。其次,快捷方式的点击事件是控制的,跳转的界面控制在开发者(产品)手中等等。

言归正传,既然是生成桌面快捷方式,那么肯定需要权限,必要的权限如下:

接着,因为Android难以言表的碎片化和厂商定制,所以还需要加一些权限来增加健壮性,下面直接copy就行:

好了,权限已经添加完毕,下面就可以上代码了,首先是创建桌面快捷方式:

//创建桌面快捷方式

private void createShortCut(){

//创建Intent对象

Intent shortcutIntent = new Intent();

//设置点击快捷方式,进入指定的Activity

//注意:因为是从Lanucher中启动,所以这里用到了ComponentName

//其中new ComponentName这里的第二个参数,是Activity的全路径名,也就是包名类名要写全。

shortcutIntent.setComponent(new ComponentName(this.getPackageName(), "这里是包名.类名"));

//给Intent添加 对应的flag

shortcutIntent.addFlags(Intent.FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS|Intent.FLAG_ACTIVITY_NEW_TASK);

Intent resultIntent = new Intent();

// Intent.ShortcutIconResource.fromContext 这个就是设置快捷方式的图标

resultIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,

Intent.ShortcutIconResource.fromContext(this,

R.drawable.yuanbao));

//启动的Intent

resultIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, shortcutIntent);

//这里可以设置快捷方式的名称

resultIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "快捷名称");

//设置Action

resultIntent.setAction("com.android.launcher.action.INSTALL_SHORTCUT");

//发送广播、通知系统创建桌面快捷方式

sendBroadcast(resultIntent);

}

创建桌面快捷方式的代码,理论上就是上面这些,ComponentName这个类用的较少,简单理解ComponentName的作用是,可以启动其他应用的Activity、Service(前提是要知道包名),然后搭配Intent使用,完成跳转。关于ComponentName与Activity、Service的参考代码如下:

ComponentName componentName = new ComponentName(param1,param2);

param1:Activity、Service 所在应用的包名

//获取应用的包名可以通过 this.getPackageName(); this代表当前的Activity

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值