本文介绍了为什么SD卡遗留getCanonicalPath没有在Android 4.2 OS模拟/ 0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
运行ADB外壳,外观为传统的链接到/ mnt /壳/模拟/ 0
但是getCanonicalPath不能得到的/ mnt /壳/模拟/ 0?
壳@安卓/存储/模拟$ ls -l命令
lrwxrwxrwx根根2012年12月7日12:01遗产 - >到/ mnt /壳/模拟/ 0
文件file =新的文件(/存储/模拟/遗产);
字符串pachString = NULL;
尝试{
pachString = file.getCanonicalPath();
//输出/存储/模拟/遗产
}赶上(IOException异常五){
e.printStackTrace();
}
解决方案
壳@机器人: 的/ mnt $ ls -l命令的/ mnt /
ls -l命令的/ mnt /
drwxr-XR-X根系2013年3月13日16:31 ASEC
drwxr-XR-X根系2013年3月13日16:31 OBB
lrwxrwxrwx根根2013年3月13日16:31 SD卡 - > /存储/模拟/遗产
drwx ------根根2013年3月13日16:31安全
drwx ------壳壳2013年3月13日16:31壳
'的/ mnt /壳
目录中已被接受的壳只。
这样的应用程序不能读的/ mnt /壳
。
run adb shell, look for the legacy link to /mnt/shell/emulated/0But getCanonicalPath can't get /mnt/shell/emulated/0?
shell@android:/storage/emulated $ ls -llrwxrwxrwx root root 2012-12-07 12:01 legacy -> /mnt/shell/emulated/0
File file = new File("/storage/emulated/legacy");
String pachString = null;
try {
pachString = file.getCanonicalPath();
// prints /storage/emulated/legacy
} catch (IOException e) {
e.printStackTrace();
}
解决方案
shell@android:/mnt $ ls -l /mnt/
ls -l /mnt/
drwxr-xr-x root system 2013-03-13 16:31 asec
drwxr-xr-x root system 2013-03-13 16:31 obb
lrwxrwxrwx root root 2013-03-13 16:31 sdcard -> /storage/emulated/legacy
drwx------ root root 2013-03-13 16:31 secure
drwx------ shell shell 2013-03-13 16:31 shell
'/mnt/shell'
directory is accepted shell only.
So apps cannot read /mnt/shell
.
这篇关于为什么SD卡遗留getCanonicalPath没有在Android 4.2 OS模拟/ 0?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!