adb 命令拉起 apk 并传递参数及相关注意事项
文章目录
- 背景
- 分析过程
- 解决方案
- 方案 1
- 方案 2
背景
跑 demo
播测,需要使用 adb
命令拉起播测 demo
,并传必要的参数将值带给我。
其中有个播放地址的值,传过来时发现值不完整,缺少了一部分。
后面发现是存在特殊字符,传参时导致了截断,故不完整。只需要特殊编码或者处理下就好。
分析过程
获取传参值的代码为:
private void testIntentData() {System.out.println("> --- testIntentData ---");Intent intent = getIntent();String action = "", type = "", url = "";if (intent != null){System.out.println("> intent not null");if (intent.hasExtra("action")){action = intent.getStringExtra("action");}if (intent.hasExtra("type")){type = intent.getStringExtra("type");}if (intent.hasExtra("url")){url = intent.getStringExtra("url");}System.out.println("> action: " + action + ", type: " + type+ ", url: " + url);return;}System.out.println("> intent is null");}
上面接收三个参数对应的值:action 参数、type 参数和 url 参数。
adb
拉起 apk
命令:
adb shell am start -n com.example.myapplication/com.example.myapplication.MainActivity -e action "pull" -e type "open" -e url "http://www.baidu.com?name=zouqi"
命令说明:
adb shell am start -n [包名]/[启动类名] -e [参数key] [参数值] ...
调用如下:
输出结果:
可以看到,通过 adb
命令传参的参数值都不存在特殊字符,故成功的获取到了传进来的所有参数的值。
如果我们的传参的 url
参数值变为 http://www.baidu.com?name=imxiaoqi&age=27&no=yh9527
。
调用:
输出结果:
这里发现 url
的值被截断了,这是因为 url
参数值中存在特殊字符 &
。
adb shell
相当于是在 linux shell
环境下运行的,而 &
符号是 shell
中的特殊字符,表示后台运行,因此会出现截断的情况。
解决方案
方案 1
使用命令:
adb shell am start -n com.example.myapplication/com.example.myapplication.MainActivity -e action "pull" -e type "open" -e url "http://www.baidu.com?name=imxiaoqi\&age=27\&no=yh9527"
这里只是对特殊字符 &
做了简单的处理,至于其他特殊字符同学们可以自己去实践,这里不推荐采用该方案,因为可能有些参数值的特殊字符单纯加 \
无法生效。
方案 2
将参数值进行 urlEncode
编码后传递,代码中获取到参数值后,再进行解码操作即可。
推荐编码工具网站:URL编码/解码
修改代码:
private void testIntentData() {System.out.println("> --- testIntentData ---");Intent intent = getIntent();String action = "", type = "", url = "";if (intent != null){System.out.println("> intent not null");if (intent.hasExtra("action")){action = intent.getStringExtra("action");}if (intent.hasExtra("type")){type = intent.getStringExtra("type");}if (intent.hasExtra("url")){url = intent.getStringExtra("url");System.out.println("> 编码 url: " + url);url = URLDecoder.decode(url);System.out.println("> 解码 url:" + url);}System.out.println("> action: " + action + ", type: " + type+ ", url: " + url);return;}System.out.println("> intent is null");}
http://www.baidu.com?name=imxiaoqi&age=27&no=yh9527
编码后的值
http%3a%2f%2fwww.baidu.com%3fname%3dimxiaoqi%26age%3d27%26no%3dyh9527
如下图:
输入命令如下:
输出结果:
推荐解决方案 2 ,解决几乎所有情况!
技术永不眠!我们下期见!
adb 命令拉起 apk 并传递参数及相关注意事项相关推荐
- Android10apk怎么传数据,Android不同apk之间传递参数与数据
转载出处:http://dongyang555-126-com.iteye.com/blog/1308586 android编程的时候,有时候需要在不同的apk之间传递参数或数据,下面是一个简单的例子 ...
- adb命令安装安卓apk包(首先解决adb不是内部命令或者不是外部命令)
'adb' 不是内部或外部命令,也不是可运行的程序 或批处理文件-解决方法 Windows键 + R → 输入cmd → 输入adb,提示"adb不是内部或外部命令,也不是可运行的程序 或批 ...
- android 环境配置和安装, Android系统包说明,基本控件,常用代码,ADB 命令行,APK文件确解,小技艺,...
一. 环境配置和安装(Android2.2) 参考文章:这里 1.1 JDK 1.2 SDK 下载地址:http://dl.google.com/android ...
- 20.27分发系统介绍;20.28expect脚本远程登录;20.29expect脚本远程执行命令;20.30expect脚本传递参数...
20.27 分发系统介绍 shell项目-分发系统-expect 20.28 expect脚本远程登录 1. 安装expect [root@hao-01 ~]# yum install -y expe ...
- adb命令 (安装apk包格式:adb install 电脑上apk地址包名)
1.adb基础命令 配置好环境变量后,在cmd窗口打开命令行,敲adb device,验证adb连接设备成功 (前置条件:adb环境配置成功.开发者选项开启了USB调试模式) 1.1.进入手机的设置- ...
- 60-008-026-使用-命令-如何在flink中传递参数
1.视界 2.概述 众所周知,flink作为流计算引擎,处理源源不断的数据是其本意,但是在处理数据的过程中,往往可能需要一些参数的传递,那么有哪些方法进行参数的传递?在什么时候使用?这里尝试进行简单的 ...
- android远程命令行工具,Android 使用 adb命令 远程安装apk
[UWP]解析GB2312.GBK编码网页乱码问题 在WebHttpRequest请求网页后,获取到的中文是乱码,类似这样: ˹ŵ��Ϸ���������� - ��̳������ - ˹ŵ��Ϸ� ...
- linux xargs 给命令传递参数 组合多个命令
简介 之所以能用到这个命令,关键是由于很多命令不支持|管道来传递参数,而日常工作中有有这个必要,所以就有了xargs命令,例如: 这个命令是错误的 find /sbin -perm +700 |ls ...
- Android开发中adb命令的常用方法
Android的SDK中提供了很多有用的工具,在开发过程中如果能熟练使用这些工具,会让我们的开发事半功倍.adb是SDK提供的一个常用的命令行工具,全称为Android Debug Bridge,用于 ...
最新文章
- 转载一个关于JavaScript几种继承方法的总结
- PyTorch开源物体检测工具包
- svn文件丢失的解法
- 计数信号量的删除与状态查询
- 让图片算好高宽再显示
- 浙江高考艺术类2021年成绩查询,2021年浙江美术高考成绩查询网址:https://www.zjzs.net/...
- 图解python专业教程_图解Python视频教程(基础篇)课程
- 安装maven到Eclipse
- c# 过滤HTML代码 源代码,案例 下载
- VHD工具-VHDTOOL
- java 参数类型不确定_java泛型的那些事
- php网上实训指导书,PHP网站开发技术-实训指导书2016吐血制作
- [九省联考2018]秘密袭击coat
- strike F1 to retry boot,F2 for setup utility
- 常用字体名称中文对应英文
- 奔驰北京工厂两年内将再投产三款电动车;希尔顿中国市场第300家酒店开业 | 美通企业日报...
- 基于matlab的基带gmsk调制解调,基于MATLAB的GMSK调制解调实验
- 32位java jre_64位的jre和32位的jre
- LIN总线、CAN总线、FlexRay总线和MOST总线
- 【MMDetection3D】MVXNet踩坑笔记
热门文章
- IT专业大学生迷茫些什么
- 微软IE浏览器各版本更新内容的区别
- vue el-tree懒加载默认展开一级,懒加载刷新(默认高亮某个节点,触发某个节点的点击事件)
- 2021年起重机械指挥考试资料及起重机械指挥模拟考试题
- linux官方认证资料,Linux 初认证资料答案.doc
- excel利用公式提取括号前、括号中的数据
- 【备忘】导出Excel,使用NativeExcel控件
- 沃尔玛全渠道首推快时尚自有品牌George
- pandas系列学习(六):数据聚合
- 鸿蒙智慧屏不能安装apk,都说鸿蒙系统兼容安卓APP,荣耀智慧屏却无法安装安卓APP?...