我们首先来看Android中为APP创建快捷方式的原理:

从图上可以看出,Android大致分7步完成快捷方式的创建:

第一步:Android系统的launcher程序会调用它的pickShortcut()方法去启动系统的pickActivity程序(应用);

第二步:pickActivity程序(应用)启动后会调用它的CheckIntentFilter()方法,去在系统中寻找可以创建快捷方式的应用有哪些,并且列举出来。只要第三方                     App用<Intent-filter>标签进行了相应的注册(具体如何注册请看下面的代码)就可以被发现并列举出来;

第三步:调用Choseitem()方法选择创建谁的快捷方式;

第四步:完成第三步之后,pickActivity程序(应用)会将选择的消息通过Intent返回给系统的launcher;

第五步:launcher程序获得pickActivity返回的消息后,就会知道创建谁的快捷方式,通过调用ProcessShortcut()方法去启动第三方App中负责创建快捷方式                     的Activity,这个Activity就是第二步中我们提到的用<Intent-filter>标签进行了注册的Activity;

第六步:第三方App中负责创建快捷方式的Activity会将快捷方式的名称,图标和点击后跳转路径通过Intent返回给launcher;

第七部:launcher收到返回的消息后调用本身的ComPleteAddShortcut()方法完成快捷方式的创建,并显示在桌面上;

分析完原理后,那么作为第三方开发者应该完成哪几步呢?

我们只需完成如下2步就ok了,其他的事情系统会为我们去做:

首先:用<Intent-filter>标签进行注册

<activity android:name=".CreatShortCut">
<intent-filter>
<action android:name="android.intent.action.CREATE_SHORTCUT"/>
</intent-filter>
</activity>

其中的“CreatShortCut”是负责创建快捷方式的Activity的名字。

然后:向Launcher返回相关数据

public class CreatShortCut extends Activity {

    /**
* Description
*
* @param savedInstanceState
* @see android.app.Activity#onCreate(android.os.Bundle)
*/ @Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState); if (getIntent().getAction().equals(Intent.ACTION_CREATE_SHORTCUT)) { Intent _returnIntent = new Intent();
_returnIntent.putExtra(Intent.EXTRA_SHORTCUT_NAME, "csx");// 快捷键的名字
_returnIntent.putExtra(Intent.EXTRA_SHORTCUT_ICON_RESOURCE,// 快捷键的ico
Intent.ShortcutIconResource.fromContext(this, R.drawable.ic_launcher));
_returnIntent.putExtra(Intent.EXTRA_SHORTCUT_INTENT, new Intent(this,
MainActivity.class));// 快捷键的跳转Intent setResult(RESULT_OK, _returnIntent);// 发送
finish();// 关闭本Activity } }
}

大功告成!!!(网上也有一些其他方法但是都很复杂,不好使用)

Android中为APP创建快捷方式的原理(自己的理解)的更多相关文章

  1. Android 中如何计算 App 的启动时间?

    (转载) 已知的两种方法貌似可以获取,但是感觉结果不准确:一种是,adb shell am start -w packagename/activity,这个可以得到两个值,ThisTime和Total ...

  2. Android中实现APP文本内容的分享发送与接收方法简述

    谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...

  3. Android实例-为程序创建快捷方式(未测试)

    结果: 1.因为只有小米手机,没有三星手机,没法测试.如果哪位神测试过的话,记得M我哦,谢了. 实例代码:  unit Unit1; interface uses System.SysUtils, S ...

  4. Android中的广播基本实现及回调方法的理解

    在Android中broadcast这一节的内容其实不算多主要是牵扯到一个broadcastreceiver类,这个类是一个抽象类,下面有一个抽象方法onreceiver(),可以再我们收到网络状态变 ...

  5. 在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能

    前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产 ...

  6. Android中实现app版本更新

    1,获取本地程序apk版本,并开启服务(下面这段代码一般在主Activity中的onCreate()方法中执行的,并开启后台服务下载新版本的apk) //获取apk包文件的管理者对象 PackageM ...

  7. Android测试(一):在Android中测试App

    原文:https://developer.android.com/training/testing/index.html 测试你的App是开发过程中的重要组成部分.通过对应用程序持续的运行测试,你可以 ...

  8. 在ubuntu中为navicat创建快捷方式

    在ubuntu中,解压navicat并不会生成快捷方式,每次运行都需要进入软件解压的目录,然后运行命令开启navicat,十分不便.今天尝试引入快捷方式,直接双击运行,感觉挺不错. 首先下载一个合适的 ...

  9. android中传统的创建数据库

    1.在Android工程中建立一个class类,且继承与SQLiteOpenHelper. 2.然后到Mainactivity中去new一个MyOpenHelper来找到它 3.第一次创建数据库的时候 ...

随机推荐

  1. Web Service学习笔记

    Web Service概述 Web Service的定义 W3C组织对其的定义如下,它是一个软件系统,为了支持跨网络的机器间相互操作交互而设计.Web Service服务通常被定义为一组模块化的API ...

  2. javascript 和jqurry详解

    javascript写的图表库,收费 highcharts jqurry有两个图标函数不收费,好用 Flot.PlotKit与MochiKit 官网下载 http://www.flotcharts.o ...

  3. HOST1PLUS 的 VPS 主機-絕佳的性能和特惠的價格

    HOST1PLUS 的 VPS 主機-絕佳的性能和特惠的價格 undefined Open Container Project undefined 80后美女董事长吴艳:嫁得好不一定比干得好容易 - ...

  4. Yii常用技巧总结

    //YII framework路径 Yii::getFrameworkPath(); //protected/runtime Yii::app()->getRuntimePath(); //pr ...

  5. 【转】[Android编程心得] Camera(OpenCV)自动对焦和触摸对焦的实现

    参考http://stackoverflow.com/questions/18460647/android-setfocusarea-and-auto-focus http://blog.csdn.n ...

  6. 最简单的基于FFMPEG的封装格式转换器(无编解码)

    本文介绍一个基于FFMPEG的封装格式转换器.所谓的封装格式转换,就是在AVI,FLV,MKV,MP4这些格式之间转换(相应.avi,.flv,.mkv,.mp4文件).须要注意的是,本程序并不进行视 ...

  7. Android的Toast介绍-android学习之旅(三十六)

    Toast简单介绍 Toast是一个很方便的消息提示框.会在桌面显示一个短暂的消息提示.有两个特点: 1.消息不会获得焦点. 2.过一段时间会自己主动消失. Toast的生成步骤 1.调用构造器或者静 ...

  8. Linux 内核使用的 GNU C 扩展

    gcc核心扩展linuxforum(转)=========================== Linux 内核使用的 GNU C 扩展 =========================== GNC ...

  9. 使用Java辅助类(CountDownLatch、CyclicBarrier、Semaphore)并发编程

    在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如CountDownLatch,CyclicBarrier和Semaphore,今天我们就来学习一下这三个辅助类的用法 一.C ...

  10. oracle修改登录认证方式

    通过配置sqlnet.ora文件,我们可以修改oracle登录认证方式. SQLNET.AUTHENTICATION_SERVICES=(NTS);基于操作系统的认证 SQLNET.AUTHENTIC ...