本文介绍了为什么SD卡遗留getCanonicalPath没有在Android 4.2 OS模拟/ 0?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

运行ADB外壳,外观为传统的链接到/ mnt /壳/模拟/ 0
但是getCanonicalPath不能得到的/ mnt /壳/模拟/ 0?

壳@安卓/存储/模拟$ ls -l命令
lrwxrwxrwx根根2012年12月7日12:01遗产 - >到/ mnt /壳/模拟/ 0

 文件fil​​e =新的文件(/存储/模拟/遗产);
字符串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?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

09-12 20:10