美文网首页
adb shell 与 Android 总结及问题

adb shell 与 Android 总结及问题

作者: 叛逆的青春不回头 | 来源:发表于2020-02-24 16:55 被阅读0次

    一、adb 启动 Android 应用

    手机连接 adb 后,可通过 am 命令做很多操作,可以启动 Service、Broadcast,杀进程,监控等功能:

    1.启动Activity: adb shell am start [options] <INTENT> (可使用 am -h 查看帮助)

    (1)拨打一个电话:

    adb shell am start -a android.intent.action.CALL -d tel:10086   //这里 -a 表示动作,-d 表述传入的数据,还有 -t 表示传入的类型
    

    (2)打开一个网页:

    adb shell am start -a android.intent.action.VIEW -d http://www.baidu.com   //这里 -d 表示传入的 data, 此处 -d 后的参数可不加引号 “”
    

    (3)打开音乐播放器:

    adb shell am start -a android.intent.action.MUSIC_PLAYER 
    或 adb shell am start -n com.android.music/com.android.music.MusicBrowserActivity    // 这里 -n 表示组件
    

    (4)启动 Activity,携带参数:
    比如,启动的 Acitvity 所在的 app 是 net.example.demo,需要启动的是其中的 MainActivity,并给他传递两个参数:pid 整数,值为10;str 字符串,"hello",则

    // -ei(extra integer)表示参数类型为整型,-es(extra string)表示参数的类型为字符串,然后它们后面分别跟一个键值对,标识参数名和具体值
    adb shell am start -a android.intent.action.MAIN -n net.example.demo/net.example.demo.MainActivity  --ei pid 10 --es str "hello"  
    

    (5)启动 Activity,携带 Uri 参数:

    比如,启动的 Acitvity 需要传递参数 flightDate、newOrderState、siteNo、fromMessage,Uri 参数为 imeituan://www.meituan.com/flight/express_status?flightDate=2017-01-22&newOrderState=401&siteNo=729&fromMessage=1,此时可以通过 am 命令 -d 选项来指定 Uri 参数,则

    adb shell am start -a android.intent.action.VIEW -c android.intent.category.DEFAULT -d “imeituan://www.meituan.com/flight/express_status?flightDate=2017-01-22\&newOrderState=401\&siteNo=729\&fromMessage=1”
    

    注意:参数中的 "&",须用 "" 对 "&" 进行转义;-d 后的 Uri 参数要加引号“ ”,否则命令不会起作用(具体介绍见这里)。

    2.启动一个服务:adb shell am startservice <服务名称>

    adb shell am startservice -n com.android.music/com.android.music.MediaPlaybackService   
    或 adb shell am startservice -a com.example.myservice   //这里 -a 表示动作,就是你在 Androidmanifest 里定义的
    

    3.发送一个广播:adb shell am broadcast -a <广播动作>

    adb shell am broadcast -a com.example.mybroadcast
    

    4.强制关闭一个应用程序:adb shell am force-stop <PACKAGE>

    adb shell am force-stop com.example.test
    

    二、遇到问题

    1.有 adb 打开网址:imeituan://www.meituan.com/train/hybrid/web?url=http://i.meituan.com/trip/train/search/

    运行报错:

    image.png

    分析与解决:

    原因:是因为编码就不能打开网址了?错!将编码后的运行出错的URL重新复制到 word,然后再复制到终端,成功打开了页面。原来是因为文本字符格式的问题,导致命令运行后报错。终端命令的使用一定要注意文本字符格式!

    三、adb获取Android应用相关信息

    adb shell dumpsys

    adb shell dumpsys battery   // 获取设备电池信息
    adb shell dumpsys cpuinfo   // 获取 cpu 信息
    adb shell dumpsys wifi      // 获取到当前连接的 wifi 名、搜索到的 wifi 列表、wifi强度等
    adb shell dumpsys power     // 获取电源管理信息
    adb shell dumpsys meminfo   // 获取内存信息
    adb shell dumpsys package   // 获取 package 信息
    adb shell dumpsys activity  // 获取 Activity 信息:此信息还可以通过 AndroidStudio 在 logcat 查看,筛选 ActivityManager 相关的 info 就 ok
    
    adb shell dumpsys notification          // 获取通知信息
    adb shell dumpsys activity top          // 获取当前界面的 UI 信息
    adb shell dumpsys telephony.registry    // 获取电话信息:电话状态等
    adb shell dumpsys meminfo PACKAGE_NAME  // 要获取具体应用的内存信息,可加上包名
    adb shell dumpsys package PACKAGE_NAME  // 获取某个包的信息
    
    adb shell dumpsys activity top | findstr ACTIVITY      //获取当前界面的 Activity
    adb shell dumpsys display | findstr DisplayDeviceInfo   // 获取设备分辨率:DisplayDeviceInfo{"内置屏幕": 1080 x 1920, 55.0 fps, density 480, 464.9 x 468.9 dpi...
    

    adb截屏

    adb shell  screencap /sdcard/screen.png
    adb pull /storage/sdcard/screen.png ./
    

    参考网址:

    http://blog.csdn.net/u013951778/article/details/52299189

    相关文章

      网友评论

          本文标题:adb shell 与 Android 总结及问题

          本文链接:https://www.haomeiwen.com/subject/sccbqhtx.html