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

本文已独家授权 郭霖 ( 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

你可能感兴趣的:(android自动创建快捷方式)