监听Google Player下载并获取包名等信息
一、解决思路
通过监听ContentObserver监听下载路径content://downloads
二、具体步骤
1 设置监听器
context.getContentResolver()
.registerContentObserver(Uri.parse("content://downloads"), true, new ContentObserver() {
@Override
public void onChange(boolean selfChange, Uri uri) {
super.onChange(selfChange, uri);
parseData(uri);
}
});
2 数据解析
- Uri过滤
private void parseData(Uri uri) {
List<String> segments = uri.getPathSegments();
if (segments != null && segments.size() > 1) {
String segment = (String) segments.get(1);
synchronized (this.pathSegments) {
if (this.pathSegments.contains(segment)) {
return;
}
this.pathSegments.add(segment);
}
obtainAppInfo(segment);
}
}
- 应用信息获取:
private void obtainAppInfo(String segment){
...
cursor = queryDownloadPkg(segment);
if (cursor == null || cursor.getColumnCount() < 15) {
return;
}
cursor.moveToNext();
String marketName = cursor.getString(9); // 应用市场包名
String appLink = cursor.getString(15); // 下载应用的包名链接
String appName = cursor.getString(20); //获取应用名称
...
}
private Cursor queryDownloadPkg(String segment) {
return this.context.getContentResolver()
.query(Uri.parse("content://downloads/public_downloads/" + segment),
(String[]) null, (String) null, (String[]) null, (String) null);
}
监听Google Player下载并获取包名等信息的更多相关文章
- Android Apk获取包名和Activity名称
一.使用aapt(Android Asset Packaging Tool)工具获取: 1.配置Android环境: a.添加build-tools/android路径到系统环境变量的中Path中,注 ...
- 二.第一个自动化demo,打开APP-如何获取包名和activity。(真机)
环境配置成功后,我们就可以进行第一个自动化测试了.用真机则不需要安装安卓模拟器.以一个简单的打开APP为例. 一.获取包名和activtity 启动一个app,我们需要知道它的平台.版本号. ...
- 【Monkey】Monkey获取包名的方式
获取包名的方式: 1.有源码:查看AndroidManifest.xml 2.只有apk: 2.1 aapt dump xmltree ColaBox.apk AndroidManifest.xml ...
- Android 获取包名,版本信息
Android 获取包名,版本信息及VersionName名称 <span style="font-size: 14px;">private String ge ...
- 手机App测试如何获取包名的入口【两种方式】
在进行手机APP测试的时候经常要获取包名.那么何为包名呢?简单来说其实就是手机APP的安装apk文件的名称,每个手机APP(软件)的包名都是唯一的. 那么我们怎样来获取包名以及包名的入口呢? 方法一: ...
- Appium Android 获取包名和 Activity 的几种方法 (转)
本文档主要记录“获取包名和 Activity 的方法”,用于自动化测试时启动APP.以下方法主要来源于网络和社区同学的贡献,特此感谢! 1. 方法一: pm list package查看包名 adb ...
- APP自动化测试获取包名的两种方法
获取包名的两种方法: 一.通过aapt获取 1.进入aapt.exe所在路径 2.在地址栏输入cmd回车,打开dos命令窗口. 3.在命令窗口输入 aapt dump badging 拖入apk 回车 ...
- Monkey通过安装包获取包名
在monkey命令中,包名常作为一个参数.但我们经常知道apk文件,却不知道包名. 如何获取包名呢? 方法一:AAPT 在SDK的build-tools目录下,aapt工具可以查看,创建,更新zip格 ...
- 纯java从apk文件里获取包名、版本号、icon
简洁:不超过5个java文件 依赖:仅依赖aapt.exe 支持:仅限windows 功能:用纯java获取apk文集里的包名,版本号,图标文件[可获取到流直接保存到文件系统] 原理:比较上一篇文章里 ...
随机推荐
- [UI] 精美UI界面欣赏[2]
精美UI界面欣赏[2]
- 使用UICollectionView
使用UICollectionView 使用UICollectionView的流程: 1. 设定一个UICollectionViewFlowLayout 2. 使用这个设定的UICollectionVi ...
- [C++] 用Xcode来写C++程序[7] Class
用Xcode来写C++程序[7] Class 不带构造函数的Rectangle类 // // Rectangle.h // Plus // // Created by YouXianMing on 1 ...
- 铁乐学Python_day12_作业
1.写函数,返回一个扑克牌列表,里面有52项,每一项是一个元组 例如:[('红心',2),('草花',2), -('黑桃','A')] def poker(): suit = ['红心', '梅花', ...
- LVS 原理(调度算法、四种模式、四层负载均衡和七层 的区别)
参考文档:http://blog.csdn.net/ioy84737634/article/details/44916241 目录 lvs的调度算法 lvs的四种模式 四层均衡负载和七层的区别 1.l ...
- 20155314 2016-2017-2 《Java程序设计》第2周学习总结
20155314 2016-2017-2 <Java程序设计>第2周学习总结 教材学习内容总结 学习目标 了解Java编程风格 认识Java的类型与变量 掌握Java流程控制的方法(分支. ...
- C# 数字证书 RSA加密解密 加签验签
KeyValuePair<string, string> keyPair = Encrypter.CreateRSAKey(); string privateKey = keyPair.V ...
- 矩阵求逆·学习笔记 $\times$ [$LuoguP4783$]矩阵求逆
哦?今天在\(luogu\)上fa♂现了矩阵求逆的板子--于是就切了切. 那么我们考虑一个矩阵\(A\),它的逆矩阵记作\(A^{-1}\),其中对于矩阵这个群来讲,会有\(A \cdot A^{-1 ...
- Php5.6.31连接sqlserver 2008R2数据库问题sqlsrv(php5.3及以上版本)与mssql(php5.3以前版本)②
Php5.6.31连接sqlserver 2008R2数据库 1.环境配置 Win7(win8.1) 64 +Apache2.4 + PHP5.6.31 + SQL Server 2008 R2数据 ...
- ORA-28000 账号被锁定的解决办法
ORA-28000 账号被锁定的解决办法 错误场景:当使用sqlplus进行登录时报错:ORA-28000 账号被锁定.错误原因:由于oracle 11g 在默认在default概要文件中设置了密码最 ...