API TrafficStats 类统计流量也是通过读取这个文件的
点喜欢 O(∩_∩) O~
你可以在右图刷新一下界面,然后看看他的 UI 元素。
浅显易懂,楼主不错支持
#9 楼 @seveniruby 嗯,我也试过这样调用,可是,发现输入输出流好像阻塞了,不知,你在实现的过程遇到过这样的情况吗?我现在想看看能不能不 root 运行 events。uiautomator 这个命令的所有者不是 shell 吗?
#7 楼 @seveniruby 是用 Runtime.getRuntime().exec()这种方式执行 shell 命令吗?你是怎么实现,能否给个思路呢?
#5 楼 @seveniruby 嗯,通过手机连上数据线通过 adb shell uiautomator events,可以输出信息。我现在想有没有可能我不连接数据线,通过设备自身的应用执行 uiautomator events 来输出信息,我试了 Runtime.exec("uiautomator evnets");这个是无法启动 uiautomator 进程,不过通过加 su 确实可以启动 uiautomator 进程通过 ps 命令可以看到该进程的父进程是 root 用户,可是读取输入输出流一直阻塞。可不可以,应用程序去执行 shell ,不用 Runtime。
#3 楼 @seveniruby 我看到的 EventsCommand.java 没有这个 UiAutomationShellWrapper 类,不过有
UiTestAutomationBridge 这个类,这个类通过注册一个 mListener = new IAccessibilityServiceClientWrapper(null, looper, new Callbacks() {}
final IAccessibilityManager manager = IAccessibilityManager.Stub.asInterface(
ServiceManager.getService(Context.ACCESSIBILITY_SERVICE));
try {
manager.registerUiTestAutomationService(mListener, mListener, info);
} catch (RemoteException re) {
throw new IllegalStateException("Cound not register UiAutomationService.", re);
}
来获得 events 相关信息。但是我移植这块代码后,执行出了权限错误。看了源码,在注册上面 mListener 需要 android.permission.RETRIEVE_WINDOW_CONTENT 权限,可该权限为系统权限。希望有所交流!
#3 楼 @seveniruby uiautomator events 这些信息可不可以不链接数据线获取这些信息?