文档章节

Android应用开发之(如何自动在桌面创建快捷方式)

simpower
 simpower
发布于 2014/08/21 10:19
字数 871
阅读 31
收藏 0

注意:只能启动主窗体

一般来说在 Android 中添加快捷方式的有以下两种:

 

  • 在launcher的应用程序列表上,长按某一应用程序图标创建快捷方式到桌面

  • 在桌面上长按在弹出框中选择快捷方式->应用程序->将添加快捷方式的程序

那么能不能在应用安装时自动将应用的快捷入口添加到桌面呢? 本文给大家分享一下相关的经验?

桌面是由launcher来控制的,所以我们可以通过下面两种方式来实现快捷方式的自动创建:

  • 通过向launcher发送Broadcast让launcher创建快捷方式

  • 为应用程序的组件注册某一个符合特定条件的IntentFilter,然后可以直接在Launcher的桌面添加启动该组件的快捷方式。

第一种方式:

/**

  * 添加快捷方式到桌面 要点:  

  * 1.给Intent指定action="com.android.launcher.INSTALL_SHORTCUT"

  * 2.给定义为Intent.EXTRA_SHORTCUT_INENT的Intent设置与安装时一致的action(必须要有)  

  * 3.添加权限:com.android.launcher.permission.INSTALL_SHORTCUT

  */

 private void addShortcutToDesktop() {

     Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT");

     // 不允许重建

     shortcut.putExtra("duplicate", false);

     // 设置名字

     shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,this.getString(R.string.app_name));

     // 设置图标

     shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,Intent.ShortcutIconResource.fromContext(this,

                     R.drawable.ic_launcher));

     // 设置意图和快捷方式关联程序

     shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,new Intent(this, this.getClass()).setAction(Intent.ACTION_MAIN));

     // 发送广播

     sendBroadcast(shortcut);

 }

当快捷方式创建成功后,launcher将通过toast的方式提示快捷方式创建成功,其中通过
shortCutIntent.putExtra("duplicate", false);设置不能重复创建,如果快捷方式已经创建则提示快捷方式已经创建
注意如果要让上述代码能成功运行,我们还需要设置Uses permission

<uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/>

                                          
第二种方式和第一种有些类似,不过我们不用广播的方式让给launcher创建,而是通过注册IntentFilter,由于“添加快捷方式”Action是 由Launcher通过startActivity-ForResult这一方法发出的,在Activity启动后把初始化的快捷方式 Intent返回给Launcher应用程序,设置结果值为RESULT_OK表示正常返回。
主要代码如下:
首先在xml中设置IntentFilter

<intent-filter>

<action android:name="android.intent.action.CREATE_SHORTCUT" />

</intent-filter>

复制代码创建核心代码:

if (Intent.ACTION_CREATE_SHORTCUT.equals(action)) {

        

Intent shortcut = new Intent(Intent.ACTION_CREATE_SHORTCUT);

     // 不允许重建

     shortcut.putExtra("duplicate", false);

     // 设置名字

     shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME,

             this.getString(R.string.app_name));

     // 设置图标

     shortcut.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,

             Intent.ShortcutIconResource.fromContext(this,

                     R.drawable.ic_launcher));

     // 设置意图和快捷方式关联的程序

     shortcut.putExtra(Intent.EXTRA_SHORTCUT_INTENT,

             new Intent(this, this.getClass()));     

        //将结果返回到launcher

        setResult(RESULT_OK, intent);       

    }

在launcher中我们运行程序就可以将快捷方式创建在桌面上。
                                       
通过上述方式可以自动将快捷方式创建到桌面上,但是每次运行程序时都会将快捷方式创建到桌面上,下面我们将通过程序判断快捷方式是否已经创建到桌面上了,基本思路是:由于快捷方式launcher管理的,我们可以通过查看launcher中是否已经有此快捷方式数据,如果有就不在创建。
主要代码如下:

/**

  * 添加权限:<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"/>

  *  

  * @return

  */

 private boolean hasInstallShortcut() {

     boolean hasInstall = false;

     final String AUTHORITY = "com.android.launcher.settings";

     Uri CONTENT_URI = Uri.parse("content://" + AUTHORITY

             + "/favorites?notify=true");

     Cursor cursor = this.getContentResolver().query(CONTENT_URI,

             new String[] { "title", "iconResource" }, "title=?",

             new String[] { this.getString(R.string.app_name) }, null);

     if (cursor != null && cursor.getCount() > 0) {

         hasInstall = true;

     }

     return hasInstall;

 }

 

上述查询操作,需要具有以下权限:

<uses-permission android:name="com.android.launcher.permission.READ_SETTINGS"></uses-permission>

注意通过程序创建的快捷方式不会随着程序卸载而自动删除。

本文转载自:http://www.xmumu.com/post/2012-04-01/17357119

simpower
粉丝 27
博文 645
码字总数 46970
作品 0
海淀
程序员
私信 提问
Android 通过分析Laucher源码整理添加快捷方式的思路

在实际开发中,实际上有很多功能或者设计我们都可以借鉴一下安卓源码, 在我写的这个Laucher系列里,就关于分析Laucher源码来开发桌面快捷方式的思路我大概整理了一下. 希望大家看了之后再遇到...

长平狐
2012/09/03
746
0
Android之快捷方式

Android中,应用程序快捷方式是桌面最基本的组件。用于直接启动应用程序,本文将对应用程序创建进行分析讲解。 创建应用程序快捷方式主要有以下几种: 在launcher的应用程序列表上,长按某一...

长平狐
2012/08/21
133
0
Android之快捷方式

Android中,应用程序快捷方式是桌面最基本的组件。用于直接启动应用程序,本文将对应用程序创建进行分析讲解。 创建应用程序快捷方式主要有以下几种: 在launcher的应用程序列表上,长按某一...

长平狐
2012/08/09
321
0
【android学习之十七】——特色功能2:桌面组件(快捷方式,实时文件夹)

二、桌面组件 1.快捷方式 Android手机上得快捷方式的意思可以以我们实际PC机器上程序的快捷方式来理解。而android中要建立某一个程序快捷方式,只需要长按桌面或者点击Menu按钮——》添加,选...

晨曦之光
2012/03/08
1K
1
Android 之快捷方式

Android中,应用程序快捷方式是桌面最基本的组件。用于直接启动应用程序,本文将对应用程序创建进行分析讲解。 创建应用程序快捷方式主要有以下几种: 在launcher的应用程序列表上,长按某一...

长平狐
2012/08/14
235
0

没有更多内容

加载失败,请刷新页面

加载更多

OpenStack 简介和几种安装方式总结

OpenStack :是一个由NASA和Rackspace合作研发并发起的,以Apache许可证授权的自由软件和开放源代码项目。项目目标是提供实施简单、可大规模扩展、丰富、标准统一的云计算管理平台。OpenSta...

小海bug
昨天
5
0
DDD(五)

1、引言 之前学习了解了DDD中实体这一概念,那么接下来需要了解的就是值对象、唯一标识。值对象,值就是数字1、2、3,字符串“1”,“2”,“3”,值时对象的特征,对象是一个事物的具体描述...

MrYuZixian
昨天
6
0
数据库中间件MyCat

什么是MyCat? 查看官网的介绍是这样说的 一个彻底开源的,面向企业应用开发的大数据库集群 支持事务、ACID、可以替代MySQL的加强版数据库 一个可以视为MySQL集群的企业级数据库,用来替代昂贵...

沉浮_
昨天
4
0
解决Mac下VSCode打开zsh乱码

1.乱码问题 iTerm2终端使用Zsh,并且配置Zsh主题,该主题主题需要安装字体来支持箭头效果,在iTerm2中设置这个字体,但是VSCode里这个箭头还是显示乱码。 iTerm2展示如下: VSCode展示如下: 2...

HelloDeveloper
昨天
7
0
常用物流快递单号查询接口种类及对接方法

目前快递查询接口有两种方式可以对接,一是和顺丰、圆通、中通、天天、韵达、德邦这些快递公司一一对接接口,二是和快递鸟这样第三方集成接口一次性对接多家常用快递。第一种耗费时间长,但是...

程序的小猿
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部