`
rocky_lei
  • 浏览: 41124 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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

 
阅读更多

一般来说在 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://xmagicj.diandian.com/post/2012-04-01/17357119

分享到:
评论

相关推荐

    解析Android应用启动后自动创建桌面快捷方式的实现方法

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

    《Android应用开发揭秘》附带光盘代码.

    《Android应用开发揭秘》全部实例源代码,配合《Android应用开发揭秘》使用 前言  第一部分 准备篇  第1章 Android开发简介  1.1 Android基本概念  1.1.1 Android简介  1.1.2 Android的系统构架  1.1.3 ...

    《Android应用开发揭秘》源码

     杨丰盛,Android应用开发先驱,对Android有深入研究,实战经验极其丰富。精通Java、C、C++等语言,专注于移动通信软件开发,在机顶盒软件开发和MTK平台软件开发方面有非常深厚的积累。2007年获得中国软件行业协会...

    Android应用开发揭秘pdf高清版

    《Android应用开发揭秘》内容全面,不仅详细讲解了Android框架、Android组件、用户界面开发、游戏开发、数据存储、多媒体开发和网络开发等基础知识,而且还深入阐述了传感器、语音识别、桌面组件开发、Android游戏...

    android开发揭秘PDF

    第10章 Android应用开发 实例 10.1 情境模式 10.2 文件管理器 10.3 通讯录 10.4 音乐播放器 10.5 天气预报 10.6 个人地图 10.7 Widget日历 10.8 小结 第11 章Android游戏开发实例 11.1 手机游戏开发简介 11.2 游戏...

    Android应用源码界面比较精美的蓝牙聊天源码.zip

    本项目是一个界面比较精美的蓝牙聊天项目源码,可以搜索并适配附近的蓝牙设备,程序安装以后会自动为程序创建桌面快捷方式,聊天内容支持文字和表情,开启应用以后会有一个常驻通知栏的图标,点击就可以再次返回聊天...

    疯狂Android讲义源码

     14.3.1 在桌面上创建快捷方式 532  14.3.2 向Launcher添加快捷方式 534  14.4 管理桌面小控件 535  14.5 实时文件夹(LiveFolder) 539  14.5.1 使用实时文件夹显示  ContentProvider的数据 540  14.6 本章...

    疯狂Android讲义.part2

    14.3.1 在桌面上创建快捷方式 532 14.3.2 向Launcher添加快捷方式 534 14.4 管理桌面小控件 535 14.5 实时文件夹(LiveFolder) 539 14.5.1 使用实时文件夹显示 ContentProvider的数据 540 14.6 本章小结 545 第15章...

    疯狂Android讲义.part1

    14.3.1 在桌面上创建快捷方式 532 14.3.2 向Launcher添加快捷方式 534 14.4 管理桌面小控件 535 14.5 实时文件夹(LiveFolder) 539 14.5.1 使用实时文件夹显示 ContentProvider的数据 540 14.6 本章小结 545 第15章...

    Android实例代码

    14.3、桌面快捷方式: 14.4、管理桌面小控件: 14.5、实时文件夹(LiveFolder): 第15章、传感器应用开发 15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器Temperature...

    黑马程序员 安卓学院 万元哥项目经理 分享220个代码实例

    |--桌面快捷方式的添加代码示例 |--桌面控件widget的创建方法 |--模拟发短信 指定号码 短信窃听提示 |--消息机制 mesage looper |--滑动之左右滑动的两种定义 |--电话簿读取联系人信息 |--监听 |--监听之CheckBox...

    疯狂Android讲义(第2版)源代码 第6章~第9章

    14.3、桌面快捷方式: 14.4、管理桌面小控件: 14.5、实时文件夹(LiveFolder): 第15章、传感器应用开发 15.2、Android的常用传感器:方向传感器Orientation; 磁场传感器Magnetic Field; 温度传感器...

    android开发使用例子

    * 为程序创建桌面快捷方式 */ private void addShortcut(){ Intent shortcut = new Intent("com.android.launcher.action.INSTALL_SHORTCUT"); //快捷方式的名称 shortcut.putExtra(Intent.EXTRA_SHORTCUT_NAME, ...

    androidjava源码-CompleteFlutterExtensionPacks:Flutter扩展包和Flutter开发的源代码

    Flutter是适用于移动应用程序(Android和iOS),桌面应用程序和Web应用程序的下一代便捷应用程序开发框架。 这是Visual Studio Code中的一些扩展,对于使用Flutter Framework进行跨平台应用程序开发非常有用。 该...

Global site tag (gtag.js) - Google Analytics