首页 > Java > java教程 > 为什么从 Java 执行'screenrecord”无法创建视频文件?

为什么从 Java 执行'screenrecord”无法创建视频文件?

Patricia Arquette
发布: 2024-11-09 06:32:02
原创
689 人浏览过

Why Does Executing

从 Android 执行 Shell 命令:解决执行问题

尝试执行命令“screenrecord --time-limit 10 /sdcard”时/MyVideo.mp4”从使用 Runtime.getRuntime().exec() 的 Java 应用程序中,生成的视频文件无法获取创建的。尽管从应用程序模拟器终端运行该命令成功运行,但仍会发生这种情况。

此问题的根本原因在于,按原样从 Java 执行该命令会将当前用户 ID (UID) 分配给该命令,而不是使用 su 命令授予的提升权限。因此,该文件未创建。

解决方案:子进程 I/O 重定向

要解决此问题,需要重定向标准输入su 进程到要执行的命令。这可确保该命令以预期的提升权限运行。

以下是实现此解决方案的修订后的代码片段:

try {
    Process su = Runtime.getRuntime().exec("su");
    DataOutputStream outputStream = new DataOutputStream(su.getOutputStream());

    outputStream.writeBytes("screenrecord --time-limit 10 /sdcard/MyVideo.mp4\n");
    outputStream.flush();

    outputStream.writeBytes("exit\n");
    outputStream.flush();
    su.waitFor();
} catch (IOException e) {
    throw new Exception(e);
} catch (InterruptedException e) {
    throw new Exception(e);
}
登录后复制

通过重定向标准输入流,“screenrecord”命令在 su 进程授予的提升权限下有效执行,从而成功创建文件。

以上是为什么从 Java 执行'screenrecord”无法创建视频文件?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板