java - 在 ADB Shell 和 DDMS 中 chmod 后 Android 权限不变

标签 java android adb adt ddms

我使用 DDMS 发送到模拟的 Android 设备 SD 卡,我什至可以在 DDMS 中看到这些。文件名是 POS1.pngPOS2.png。 SD卡路径为/storage/sdcard/foldername

在我的代码中,我想检查我的文件是否为File(),所以我已经写了

String filepath = "/storage/sdcard/foldername/POS1.png";
File file = new File(filepath); 

if (!file.isFile()){
//do something
}
else{
//do something else
}

if 条件始终返回 true(即文件不是文件)。 我认为这可能是一个权限问题(文件的当前权限是 u=>rwxg=>rwx),所以我尝试更改来自 adb shell 的文件:

  1. 我在模拟器中启动了我的程序
  2. 打开cmd(在Windows上。adb的路径已在环境中设置)
  3. 输入以下代码

C:\> adb shell
root@generic:/# su
输出:su
root@generic:/# chmod -R 777/storage/sdcard/foldername/
输出: chmod -R 777/storage/sdcard/foldername/
root@generic:/# ls -l/storage/sdcard/foldername/
权限仍然显示相同。即使在 DDMS 中,它们也是相同的。我什至重新启动了设备和 eclipse,没有任何变化。我也尝试了以下变体:
root@generic:/# chmod -R 777/storage/sdcard/foldername/*
root@generic:/# chmod -R 777/storage/sdcard/foldername/*.png
root@generic:/# chmod 777/storage/sdcard/foldername/POS1.png
使用 u+rwx/g+rwx/o+rwx/a+rwx 代替 777 给我一条“错误模式”消息

提前感谢您的帮助!

编辑: 所以我使用以下代码来检查异常:

try {
    FileInputStream fis = null;
    fis = new FileInputStream("/storage/sdcard/foldername/POS1.png");
} catch (IOException e) {
    Log.e("openfile", "Exception:"+e.getMessage());
}

我收到消息打开失败:EACCES(权限被拒绝)”

最佳答案

您需要此权限:

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

另外,看看这个 link有关 API 19 及更高版本的一些注意事项。

关于java - 在 ADB Shell 和 DDMS 中 chmod 后 Android 权限不变,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22760750/

相关文章:

java - android中读取json的奇怪if语句

java - 尝试调用从另一个类定义变量的方法时出现编译错误

android - bash 传递参数无效(adb)

java - 我可以使用什么来检索用户在我的应用程序中的图像上标记的区域?

java - 如何将类的一个参数的值复制到另一个Collection对象?

android - Unity Tilt Shift Shader 在移动设备 (Android) 上的视觉效果不佳?

android - 使用许多 fragment 是一种不好的做法吗?

java - 兼容php和java的json-rpc实现并支持ssl

android - ECLIPSE-与adb的连接断开,出现严重错误

android - 我可以使用Gradle在Android的调试版本中启用断言吗?