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中函数传递参数的形式主要有以下五种,分别为位置传递,关键字传递,默认值传递 ... 
随机推荐
- 机器学习进阶-目标跟踪-KCF目标跟踪方法 1.cv2.multiTracker_create(构造选框集合) 2. cv2.TrackerKCF_create(获得KCF追踪器) 3. cv2.resize(变化图像大小) 4.cv2.selectROI(在图像上框出选框)
			1. tracker = cv2.multiTracker_create() 获得追踪的初始化结果 2.cv2.TrackerKCF_create() 获得KCF追踪器 3.cv2.resize(fr ... 
- mp3-
- curator 实现分布式一致性锁
			最近准备在项目中引入分布式锁,故而研究基于zookeeper的curator框架. 网上资料不多,自己研究其源码发现,这个框架已经帮我做了很多现成的实现. 下面介绍下锁的实现: 通过源码中Lockin ... 
- 3:while、for 循环语句
			循环就是重复的做一件事情.python 中的循环语句有 while 和 for. while 循环 while 循环必须得有一个计数器,否则会变成一个死循环. # 例如这段代码,这段程序运行之后会一直 ... 
- 【转】 DOTA2中的伪随机及其lua实现
			因为单纯的随机确实会影响到竞技性,所以dota2引入的是伪随机机制,在大量的技能中,比如说混沌的混乱之箭.剑圣的剑舞.冰女的冰霜领域之类的技能,都利用了伪随机机制. 而纯随机,或者标准正态分布并不会因 ... 
- java基础总结001
			1 sdf.parse()和sdf.format()它们两者的用法 http://www.imooc.com/wenda/detail/324671 3 Java String.s ... 
- React/anu实现Touchable
			在RN中有一个叫Touchable 的组件,这里我们重演如何实现它. Touchable存在的意义是屏蔽click的问题.移动端与手机的click 在一些浏览器是有差异,比如说著名的300ms延迟. ... 
- Structs复习   OGNL
			Dominmodel只有传 User.age 类似的这种Structs才能帮创建对象 Dominmodel User里必须有空的构造方法 OGNL:OBJECT GRAPHIC NAVAGATION ... 
- django select_related()和反射结合
			对于有外键关联的表,select_related()会自动进行多变关联; ret = models.UserInfo.objects.all().select_related() print ret. ... 
- js(鼠标键盘拖动事件)
			拖动事件是h5(HTML5的) 1:draggable(true) 2:拖动源 ondragstart ,ondragend 3:目的地 ondraglenter,ondragover,ondragl ... 
