am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符&的解决方案
一、am start的内容的整理
主要包含以下内容:am start的常规操作及参数的含义,-d 参数的含义,以及如何在APK中设置参数获取
使用命令如下:adb shell am start -n com.test.myapp/.Activity.TestActivity -d '%s'
在python中具体调用的时候,会用""将内容全部包裹起来,然后再通过%变量去替换'%s'
例如:
cmd3 = "adb shell am start -n com.ganji.testwebview/.Activity.OriginalTestActivity -d '%s'" %url
这里-d就是用来传递给APP的参数,这个-d传递的就是intent的数据,
那么在APK中是如何接收这个-d后面的参数的呢?-d这个参数后面的内容就代表是通过Intent传递的:
具体语句为:urltext=getIntent().getDataString();
关于getIntent的一个具体用法,怎么获取不同类型的数据见下方地址:http://blog.csdn.net/flowingflying/article/details/9364799
具体的am start的一个详解地址如下:
http://gityuan.com/2016/02/27/am-command/
二、python传递数据包含中文的问题以及特殊字符的问题
在通过adb shell将包含了&的url的内容传递给APK的时候,会出现无法跳转的情况,原因是在shell中&是一个特殊字符,因此要通过一个单引号'将&包裹起来,刚开始的时候,在一中的adb命令为:
adb shell am start -n com.test.myapp/.Activity.TestActivity -d %s
后来增加了'%s'
测试之后,发现增加了''单引号之后,url的整个内容都能够完整传递过去,但是这仅限于windows下,在linux下因为&是一个特殊符号,所以通过adb shell am start的方式启动Activity之后将url传递过去,会出现截取url的情况,比如说:https://baidu.com/1243&w3fs&jhre=12,就会截取url到第一个&那里,这样就会导致想要加载的url加载不全,那么得到的结果也不正确,因此针对这样的情况,而且因为存在&很容易出现am start失败的情况,经常Activity就启动失败,但是如果不带这个参数就基本不会失败,因此修改成了:
通过读取sdcrad中的文件,将内容设置成EditText的内容,那么这个sdcard中的内容就需要提前将本次url的内容先写入到文件中,再将这个包含url内容的文件push到sdcard中,通过这种方式修改后,就没有出现am start失败的情况了,而且url的内容能够显示完全,并且通过正确的url请求到正确的信息
备注:在往文件中写url的内容的时候,需要注意打开文件的方式,建议通过'wb'的二进制方式打开,之前通过'w'直接打开,存在中文及特殊字符的情况下,会导致因为编码方式的原因而提示异常导致失败,因此改成二进制的方式进行写文件

另外,就是url中存在中文的情况也会因为编码的方式导致出现问题,用了一个完全通用的方式进行处理:
import sys
reload(sys)
sys.setdefaultencoding('utf8')
因为使用的是python27,就在添加以上set语句之前先通过下方的语句测试了一下:
print sys.getdefaultencoding(),结果是ascii
加上以上语句之后:结果是utf8
其中utf-8和utf8的区别是什么呢?具体见下方url:http://blog.mimvp.com/2014/12/difference-between-python-utf-8-and-utf8/
am start的总结,-d参数的总结,以及python中传递内容包含中文及特殊字符&的解决方案的更多相关文章
- Angular2入门系列教程6-路由(二)-使用多层级路由并在在路由中传递复杂参数
上一篇:Angular2入门系列教程5-路由(一)-使用简单的路由并在在路由中传递参数 之前介绍了简单的路由以及传参,这篇文章我们将要学习复杂一些的路由以及传递其他附加参数.一个好的路由系统可以使我们 ...
- 如何获取url中的参数并传递给iframe中的报表
在使用报表软件时,用户系统左边一般有目录树,点击报表节点就会在右侧网页的iframe中显示出报表,同时点击的时候也会传递一些参数给网页,比如时间和用户信息等.如何使网页中的报表能够获取到传递过来的参数 ...
- python中定义函数和参数的传递问题
作者:達聞西链接:https://zhuanlan.zhihu.com/p/24162430来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 5.2.4 函数.生成器和类 ...
- Python 中使用optparse进行参数解析
使用过Linux/Unix的人都会知道,命令行下的很多命令都需要参数,在C语言中添加和解析参数比较繁琐.Python中提供了optparse模块可以非常方便地处理命令行参数. 1 命令行参数的样 ...
- Python中函数的参数传递与可变长参数
转自旭东的博客原文 Python中函数的参数传递与可变长参数 Python中传递参数有以下几种类型: (1)像C++一样的默认缺省函数 (2)根据参数名传参数 (3)可变长度参数 示例如下: (1)默 ...
- python中的默认参数
https://eastlakeside.gitbooks.io/interpy-zh/content/Mutation/ 看下面的代码 def add_to(num, target=[]): tar ...
- python中的参数问题
python中的有默认参数和可变参数之分 默认参数arg 可变参数args, kargs 默认参数arg就是调用指定参数 可变参数*arg调用时传入的的参数会被python自动包装为列表 可变参数ka ...
- 回发或回调参数无效。在配置中使用 pages enableEventValidation=true 或在页面中使用 %@ Page EnableEventValidation=true % 启用了事件验证
WebForm中回发或回调参数无效问题的解决 解决 .NET中回发或回调参数无效问题的解 该错误的详细提示信息为: 回发或回调参数无效.在配置中使用 <pages enableEventVali ...
- python 函数传递参数的多种方法
python中函数根据是否有返回值可以分为四种:无参数无返回值,无参数有返回值,有参数无返回值,有参数有返回值. Python中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ...
随机推荐
- as2 shareObject本地缓存存储位置:
shareObject本地缓存存储位置: win7系统用户到C:\Users\[你的用户名]\AppData\Roaming\Macromedia\Flash Player\#SharedObject ...
- 修改页面中显示出需要修改的数据(包括select选择框复显示)
页面中需要用到某个对象时,在底层代码中赋值,然后页面用java代码进行获取调用 如下截图: select复显示:根据后台方法赋值选择框 ,并设置初始值 按钮及选择框的禁用(五种方法): 方法一: $( ...
- idea 执行maven 命令
如果当前账号不是超级管理员,这边需要执行系统用户变量, 输入安装文件bin路径 参考:https://blog.csdn.net/qq_19167629/article/details/7958490 ...
- css3 之border-radius 属性解析
在css 设置样式的时候,有时候会用到将元素的边框设置为圆形的样子的时候,一般都是通常直接设置:{border-radius:5px },这样就行了,但是到底是什么意思,一直以来都没有弄明白,只是知道 ...
- golang使用Nsq(转)
为什么要使用Nsq 最近一直在寻找一个高性能,高可用的消息队列做内部服务之间的通讯.一开始想到用zeromq,但在查找资料的过程中,意外的发现了Nsq这个由golang开发的消息队列,毕竟是golan ...
- linux command>file 2>&1 & 命令详解
command>file >& & 命令的最后一个&表示把该命令以后台的job的形式运行 一个命令的执行伴随着三种输入输出 标准输入(stdin):默认指向键盘的输 ...
- linux 3.10中完成量的使用
完成量是基于等待队列设计的,所以显然不能在中断上下文使用完成量. struct completion { unsigned int done; wait_queue_head_t wait; }; 我 ...
- 【376】COMP 9021 相关笔记(二)
Note_01 zip() itertools.zip_longest() %time Note_02 for 循环单行输出 list 技巧 迭代器 生成器 map() zip() from path ...
- MYSQL数据库中,常见的数据类型有哪些?它们与java中的数据类型如何对应
A.常规 映射 integer 或者 int int 或者 java.lang.Integer INTEGER 4 字节 long long Long BIGINT 8 字节 short short ...
- 关于三层(dao,serviece,servlet)
在登陆校验中, dao:返回的是resultset 对象,就是 ps.executeQuery(需要强化的是jdbc的具体的流程) 其中的数据库连接时可以自己写 可以通过工厂类 可以通过数据库的连接 ...