如何使用Runtime.getRuntime().exec("cmd")。

 2023-01-20    311  

问题描述

在我的应用程序中,我正在尝试执行我的SD卡上存在的本机代码.

File sdCard = getExternalFilesDir(null); // directory where native file is placed
String nativeFile = "nativeFile";

String cmd = "shell /system/bin/chmod 0777 " + sdCard.getAbsolutePath() + "/" + nativeFile;
Process proc = Runtime.getRuntime().exec(cmd);

但是,在执行Runtime.getRuntime().exec(cmd)时,它会引发错误:

如何使用Runtime.getRuntime().exec("cmd")。

java.io.IOException: Error running exec(). Command: [shell, /system/bin/chmod, 0777, /storage/emulated/0/Android/data/com.example.andridutilproject/files/native] Working Directory: null Environment: null

有什么建议,如何解决这个问题?

推荐答案

首先,您应该在try-catch-cacke子句中打电话给exec捕获ioexceptions.

第二,使用 exec(java.lang.string [])用参数执行命令.例如,类似于

Runtime.getRuntime().exec(new String[]{ "shell", "/system/bin/chmod", "0777", sdCard.getAbsolutePath() + "/" + nativeFile });

其他推荐答案

通常禁用Android系统中的SDCARD以执行.因此,即使您正确执行CHMOD命令,它也会失败.

您可以轻松测试.通过USB(ADB Shell)启动Shell并执行CHMOD命令.它将因”不良模式”之类的错误消息失败.

因此,您必须将文件复制到具有写入访问权限的其他位置,然后在该副本上设置可执行文件.您可以尝试将文件复制为”/data/local/tmp/”,但我不确定该路径是否仍然可用.

以上所述是小编给大家介绍的如何使用Runtime.getRuntime().exec("cmd")。,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对77isp云服务器技术网的支持!

原文链接:https://77isp.com/post/25952.html

=========================================

https://77isp.com/ 为 “云服务器技术网” 唯一官方服务平台,请勿相信其他任何渠道。