要求是在任何位置(例如“ / sys / bus / i2c / devices / 4-0024 / command”)使用echo命令写入文件,此处 command 是文件名,其中值待写。
我尝试了下面的代码,但没有用
private void writeCommand(String data) {
try {
Runtime rt = Runtime.getRuntime();
Process proc = rt.exec("echo "+data+" > "/sys/bus/i2c/devices/4-0024/command");
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Throwable t) {
t.printStackTrace();
}
}
此处命令可以是任何字符串。 后来我得到了这个answer,所以我尝试了同样的方法,但是没有运气。
以下是相同的代码:
private void writeCommand(String data) {
try {
Runtime rt = Runtime.getRuntime();
String[] cmnd = {"sh", "-c", "echo " + data+ ">" /sys/bus/i2c/devices/4-0024/command"};
Process proc = rt.exec(cmnd);
BufferedReader br = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
} catch (Throwable t) {
t.printStackTrace();
}
}
注意1:我只需要使用shell命令来写入文件, 使用FileWriter
注2:我的应用是系统应用,因此拥有所有特权 权限,包括“ WRITE_EXTERNAL_STORAGE”
注3:我使用chmod 777授予了Linux写权限
注意4:android linux sepolicy已关闭。
注5:如果我在命令提示符下使用相同的命令,则它正在向其中写入数据 文件
请让我知道如何实现这一目标。