Android中为APP创建快捷方式的原理(自己的理解)
我们首先来看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创建快捷方式的原理(自己的理解)的更多相关文章
- Android 中如何计算 App 的启动时间?
(转载) 已知的两种方法貌似可以获取,但是感觉结果不准确:一种是,adb shell am start -w packagename/activity,这个可以得到两个值,ThisTime和Total ...
- Android中实现APP文本内容的分享发送与接收方法简述
谨记(指定选择器Intent.createChooser()) 开始今天的内容前,先闲聊一下: (1)突然有一天头脑风暴,对很多问题有了新的看法和见解,迫不及待的想要分享给大家,文档已经写好了,我需要 ...
- Android实例-为程序创建快捷方式(未测试)
结果: 1.因为只有小米手机,没有三星手机,没法测试.如果哪位神测试过的话,记得M我哦,谢了. 实例代码: unit Unit1; interface uses System.SysUtils, S ...
- Android中的广播基本实现及回调方法的理解
在Android中broadcast这一节的内容其实不算多主要是牵扯到一个broadcastreceiver类,这个类是一个抽象类,下面有一个抽象方法onreceiver(),可以再我们收到网络状态变 ...
- 在Android中使App高速、简单地支持新浪微博、微信、QQ、facebook等十几个主流社交平台的分享功能
前言 在如今的APP或者游戏中,分享功能差点儿已经成为标配.分享功能不但能够满足用户的需求.也能够为产品带来很多其它的用户,甚至能够对用户的行为.活跃度.年龄段等情况进行数据统计,使得软件公司能够对产 ...
- Android中实现app版本更新
1,获取本地程序apk版本,并开启服务(下面这段代码一般在主Activity中的onCreate()方法中执行的,并开启后台服务下载新版本的apk) //获取apk包文件的管理者对象 PackageM ...
- Android测试(一):在Android中测试App
原文:https://developer.android.com/training/testing/index.html 测试你的App是开发过程中的重要组成部分.通过对应用程序持续的运行测试,你可以 ...
- 在ubuntu中为navicat创建快捷方式
在ubuntu中,解压navicat并不会生成快捷方式,每次运行都需要进入软件解压的目录,然后运行命令开启navicat,十分不便.今天尝试引入快捷方式,直接双击运行,感觉挺不错. 首先下载一个合适的 ...
- android中传统的创建数据库
1.在Android工程中建立一个class类,且继承与SQLiteOpenHelper. 2.然后到Mainactivity中去new一个MyOpenHelper来找到它 3.第一次创建数据库的时候 ...
随机推荐
- 【leetcode】编辑距离
dp方程“ 1.初始化:dp[0][i]=i; dp[j][0]=j; 2.dp[i][j]= dp[i-1][j-1](相等) dp[i-1][j]+1 ,,dp[i][j-1]+1 ...
- opencv Installation in Linux and hello world
http://opencv.org/quickstart.html Installation in Linux These steps have been tested for Ubuntu 10.0 ...
- etc下
用户账号与密码参数: /etc/passwd . /etc/shadow 用户组相关方面的条件: /etc/group . /etc/gshadow 用户个人文件数据: /h ...
- kafka rebalance 部分分区没有owner
转发请注明原创地址http://www.cnblogs.com/dongxiao-yang/p/6234673.html 最近业务同学反馈kafka上线的时候某个topic的部分分区一直没有owner ...
- 高性能MySql进化论(十一):常见查询语句的优化
总结一下常见查询语句的优化方式 1 COUNT 1. COUNT的作用 · COUNT(table.filed)统计的该字段非空值的记录行数 · ...
- mysql2redis
mysql2redis这个项目主要解决mysql数据跟redis数据同步的问题 目前在测试环境研究这方面的应用,以下是git上面的介绍 git入口 git安装入口 Dependencies pl ...
- Unity3D延迟回调的封装
最近,整理项目框架逻辑时,无意中翻到n年前封装的延迟回调管理器,就拎出来说道说道: 先说一下系统提供的几种常用的延迟回调方式: 1)Invoke(Invoke.CancelInvoke):首先需要继承 ...
- [转载]大道至简!!!从SAP HANA作为SAP加速器的方式,看ERP on HANA的春天
I AM A ABAPER! 科技的进步,一定会使一些东西变得越来越精简! 大道至简!!! 文章很好!!!!!!!!!!! -------------------------------------- ...
- XMind十大最有用的功能
XMind十大最有用的功能 XMind是一款顶级商业品质的思维导图软件和头脑风暴软件,在企业和教育领域都有很广泛的应用,XMind功能全面,易上手,在此小编给大家整理出了XMind十大最有用的功能以供 ...
- Title Case
地址:http://www.codewars.com/kata/5202ef17a402dd033c000009/train/python 题目: A string is considered to ...