【问题标题】:How to create a directory in /data folder in android如何在android的/data文件夹中创建一个目录
【发布时间】:2014-07-03 09:51:26
【问题描述】:

我正在尝试使用应用程序在 Rooted android 设备的 /data 文件夹中创建一个目录。我正在尝试两种方法,第一种是使用 mkdirs() 方法,另一种是执行 Runtime.exec()。以下是代码:

String path = "/data/abc";
File abc = new File(path);
Process proc = runtime.exec("chmod 777 /data");
proc.waitFor();
proc = runtime.exec("mkdir " + path);

当然,如果我转到“adb shell”并简单地运行命令

#mkdir /data/abc

它有效。但是我如何通过应用程序来做到这一点。以下是另一种方式-

String path = "/data/abc";
File abc = new File(path);
boolean isDirCreated = abc.mkdirs();

我没有在 /data 文件夹中创建所需的文件夹。 我已经拥有 Manifest 文件中写入外部存储的权限。

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

请提出任何方法。

【问题讨论】:

  • mkdirs() 是否抛出异常?
  • 您是否为您的应用授予了 root 权限?
  • @WojciechKo 不,mkdirs() 不会抛出任何东西,它只是返回 false。那么 mkdirs() 的 javadoc 也不会抛出任何东西,它返回 'boolean'。
  • @m0skit0 如何给安卓应用授予root权限?

标签: android adb


【解决方案1】:

根据这个问题:How to create directory automatically on SD card

也许你需要添加权限:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

更新:

来自这个问题:Create a folder and write into it in the root of android
不确定它是否 100% 正确但应该可以工作:

String path = "/data/abc";
String cmd = "mkdir " + path;
Process p = Runtime.getRuntime().exec("su");
OutputStream os = p.getOutputStream();
os.write(cmd.getBytes());
os.flush();
p.waitFor();

【讨论】:

  • @WojciechKo 手机是否必须root才能执行上述代码?
  • @codeMan 我猜是的。如果没有 root,su 身份验证应该会失败。
  • @WojciechKo 我现在也尝试了“su”版本,没有帮助。
  • @darthvading 正如 WojciechKo 所提到的,您需要 root 权限才能在 /data/ 目录中创建一个文件夹,您可能没有该文件夹,如果有用,您可以在 /sdcard 中创建该目录。
  • @codeMan 我已经尝试过使用 'Process p = Runtime.getRuntime().exec("su");'它没有用。我必须在“/data/”而不是“/sdcard/”中创建目录
猜你喜欢
  • 2011-07-26
  • 2011-08-03
  • 1970-01-01
  • 2017-04-27
  • 2018-12-31
  • 2014-09-07
  • 2020-11-18
  • 1970-01-01
相关资源
最近更新 更多