You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java调用root命令获取Android用户/设备信息的文件权限问题

问题原因

通过su执行screenrecord生成的文件所有者为root用户,默认权限配置不允许非root用户访问,Android Studio的Device File Explorer依托ADB shell身份运行,无root权限因此无法读取导出文件。另外data/data/[包名]属于应用私有目录,不会通过MTP协议暴露给PC端的Windows文件资源管理器,因此你无法在Windows中直接找到对应路径。

可行解决方案

  • 方案1:生成文件后修改权限
    执行完录制命令后追加修改文件权限的命令,允许其他用户读取文件,Device File Explorer即可正常访问:
    runCommand("chmod 644 " + getApplicationContext().getFilesDir() + "/sRec.mp4");
    
  • 方案2:直接输出到公共存储路径
    用root身份执行录制命令时可直接把输出路径指定到SD卡公共目录,无需申请应用存储权限,生成的文件可直接在Windows的MTP存储中找到:
    runCommand("screenrecord --time-limit 9 /sdcard/sRec.mp4");
    
  • 方案3:手动通过ADB导出文件
    不想修改代码的话可以直接在ADB命令行执行以下操作导出文件:
    adb shell
    su
    cp /data/data/[你的应用包名]/files/sRec.mp4 /sdcard/
    
    执行完成后即可在PC端直接读取/sdcard路径下的录制文件。

补充说明

你当前的runCommand方法只实现了命令写入,没有读取进程的输出流和错误流,如果后续需要排查命令执行问题,建议补充读取process.getInputStream()和process.getErrorStream()的逻辑,方便定位错误。

内容的提问来源于stack exchange,提问作者erdemc

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.08 02:27:04