【Android开发技巧】 - 如何获取应用Shortcut在Launcher坐标信息
来源:互联网 发布:php防止sql注入方法 编辑:程序博客网 时间:2024/06/05 10:00
文章链接:http://blog.csdn.net/jiazhijun/article/details/8878941
作者:Jack_Jia 邮箱: 309zhijun@163.com
一、序言
目前市面上好多的工具类软件都实现了一个很有意思的交互方式,当用户点击Launcher上应用快捷方式icon时,在Icon的位置上方启动一个小的窗口来显示应用处理过程,这种交互的好处是用户不需要离开Launcher即可完成相应操作。但是应用是如何得到快捷方式Icon在Launcher中坐标信息的呢?
今天我们就通过逆向分析360优化大师来看看获取icon坐标信息的实现细节。
二、分析过程
360优化大师一键清理交互方式如下图所示:
当用户点击Launcher中“一键清理”时,界面显示悬浮窗口并显示清理的过程动画和清理结果。该悬浮窗口显示位置能够根据Icon位置的变化而变化。
当点击一键清理icon时,系统发生了什么事情呢?
我们通过adb shell logcat查看日志信息,可以清晰的看到当点击事件发生时,系统发生了什么。
通过log信息,我们可以看到,当点击一键清理icon时,系统启动了.shortcut.clear.CleanActivity组件。请注意启动参数 bnds=[[125,392][235,510]]
接下来查看.shortcut.clear.CleanActivity组件代码:
.shortcut.clear.CleanActivity组件并没有做太多的事情,并调用了Intent.getSourceBounds()方法,并将方法结果传递给了CleanViewServiceEx服务。
Intent.getSourceBounds()方法似乎就是一键清理icon的坐标信息。
接下来继续查看CleanViewServiceEx服务组件代码:
CleanViewServiceEx组件计算出了悬浮窗口在屏幕中的显示区域,并在该区域显示视图。
其实通过查看Android系统源代码Launcher.java 我们就可以获取真相,当shortcut被点击时,Launcher会通过setSourceBounds方法设置图标的坐标信息并通过Intent发送出去:
三、结论
通过Intent.getSourceBounds()方法可以获取到Shortcut在Launcher中的坐标信息。
- 【Android开发技巧】 - 如何获取应用Shortcut在Launcher坐标信息
- 获取应用Shortcut在Launcher坐标信息
- Android Launcher 应用开发
- Launcher-shortCut
- Android中获取应用程序(包)的信息(launcher获取系统应用)
- Android -- Launcher 和 AppWidget, shortcut, LiveFloder,
- [小技巧]如何让你的app在Android launcher中显示在第一个位置
- android 在清除应用数据后,会重复生成shortcut
- Android Launcher桌面应用快捷方式的开发
- Android Launcher桌面应用快捷方式的开发
- Android Launcher桌面应用快捷方式的开发
- Android Launcher-----桌面应用快捷方式的开发!
- android launcher开发(7) 启动应用
- Android获取应用信息
- Android开发————如何在锁屏之后还能获取GPS信息
- Android 开发技巧 - 获取apk签名信息的方法
- 0501-APP-launcher-shortcut
- 获取快捷方式在Launcher数据库中的信息 Failed to find provider info for com.android.launcher2.settings
- COM 线程模型
- h264参考代码中的cbp是什么意思
- oracle数据库环境搭建
- IIS的负载均衡的解决方案
- VS2008中CDockablePane停靠框
- 【Android开发技巧】 - 如何获取应用Shortcut在Launcher坐标信息
- 让你的PHP更安全之PHP.ini
- ios事件处理读书笔记
- C++ 动态链接库的两种调用方式
- PKU-1080 Human Gene Functions
- Oracle DECODE函数的语法
- Unity3D 脚本UTF-8编码/Unity3D 脚本支持中文
- IE6浏览器中的gzip压缩输出问题
- 算法策略的总结