赞
踩
上一次做完adb_tool.exe的demo之后,本来想先研究一下单元测试,但是又来了几个需求说需要一个开机自启动、卸载和重启手机的功能。又开始倒腾变更内容的开发。
这里先附上一个adb命令速查地址,我认为写得比较全面:
https://www.wanandroid.com/blog/show/2310
首先是直接使用adb命令操作并且实验,验证上面所讲的三个需求能否使用adb命令实现,然后再在QT界面实现功能,实验的结果如下:
自启动功能
查阅了一些资料没有很好的方案解决让应用开机自启,都引导我使用androidk开发才可以,目前只能先考虑手动启动应用。
应用启动的命令格式
adb shell am start [options] <INTENT>
此处发现一个关键难点就是获取应用包名和startAcitivity名,卸载功能也需要应用包名,它执行命令其实是下面这样的
adb shell am start com.tencent.qqmusic/.third.DispacherActivityForThird
com.tencent.qqmusic这个就是QQ音乐应用对应的包名
./third.DispacherActivityForThrid是它的startAcitivity名
这跟我下载的apk文件名完全不搭边
“b7f53650f0fa6c623a219df482dafd1b.apk”
然后我翻阅了一些资料最后确定了需要先查到应用包名才能查到startAcitivity名。
来看查看应用包名的使用
我使用了一下这几个命令参数,最后的结论是最好知道应用名,使用关键字参数,二选是<-3>参数显示第三方应用。这样可以过滤少一些。看实验结果
获取到包名之后就稍微简单一点了,至少卸载功能可以实现,下一步获取startAcitivity名,因为我们是需要启动应用,所以只能从应用详情获取到startAcitivity名,再看命令格式
adb shell dumpsys package <packagename>
只需要把包名参数输入即可,startAcitivity名位置在Activity Resolver Table中打印“包名/.”后跟的就是startAcitivity名,也就是整个[options]启动参数.
最后可以启动应用了,命令即开头那一行
adb shell am start com.tencent.qqmusic/.third.DispacherActivityForThird
此处觉得略坑是因为我能用命令安装apk但不能直接使用命令启动它,因为没有很好的办法直接获取到应用包名和startAcitivity名,至少现在没想到。
为什么我认为是难点,因为界面实现还需要获取应用包名和startAcitivity名,而通过上面的实验可以看出,我只能通过adb命令打印的消息中查找到这两个参数,大家可以看到打印的消息实在太多了,对于刚入门的我毫无头绪,不知道如何裁剪到我需要的参数,所以我打算实现用过滤的方式手动操作。
卸载功能
得到包名后直接执行卸载命令即可,看命令格式:
adb uninstall [-k] <packagename>
实验如下:
重启功能
重启功能比较简单,使用adb reboot
即可
整理好思路后开始调整,比较随意没有做布局,因为我的艺术细胞不是很强哈,demo工程注重实现,
使用一个文本过滤暂时实现功能。
查看包名
不小心遮挡了,截图遮挡部分为检查设备状态部分,每个功能基本都有。
编码思路是首先检查设备连接状态,再检查过滤输入是否为空,空值查看第三方应用,非空执行关键自检索。
里面有个isNull和isEmpty的使用卡了我一会,因为我在调试是在检查过滤输入是使用的是isNull,所以当我不输入任何内容时一直跳不进判断为真的代码。查阅了一下资料
isNull是对象为空
isEmpty是值为空
我在过滤输入获取的应该是值才对,所以应该使用Empty。
查看startActivity名
编码思路和查看包名一致
卸载应用
启动应用
重启手机
此次编码修改了第一次代码,文件名输入框没判空值,这次加了进去
加入isEmpty
判断那一段即可
这次增加三个功能使用1个工作日,测试基本功能能够使用。
已知问题:
1.查看包名弹出的第三方应用按行打印的,应用太多会超出屏幕,有可能影响查看包名,最好是用关键字过滤。
2.查看活动名弹出的提示窗也如此,不过不影响查看应用包名和startActivity名参数。
3.功能只能执行命令,用户需要从打印的消息中查看是否执行成功,可以自行看看有没优化空间。
4.可能出现执行命令手机不会响应导致界面卡死,暂未做处理。
好了,此篇即到此,遇到典型的问题可能会单独在问题钻研栏专题发布。
写得不好,仅供参考,欢迎骚扰指出问题。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。