0

我有以下函数应该返回 wpa_supplicant.conf 文件的内容。

我尝试通过这种方式读取文件:

public static String readTextFile() {
        aBuffer = "";
        try
        {
            Runtime.getRuntime().exec("su");
            Runtime.getRuntime().exec("chmod +x /data/misc/wifi/wpa_supplicant.conf");
            File path= Environment.getDataDirectory();
            File myFile = new File("/data/misc/wifi/wpa_supplicant.conf");
            FileInputStream fIn = new FileInputStream(myFile);
            BufferedReader myReader = new BufferedReader(
                    new InputStreamReader(fIn));
            String aDataRow = "";
            aBuffer = "";
            while ((aDataRow = myReader.readLine()) != null) {
                aBuffer += aDataRow + "\n";
            }
            myReader.close();

        }
        catch (Exception e)
        {
            Logger.e("Cannot read the file");
            Logger.e(e.getMessage());
        }
        return aBuffer;
    }

我也添加到清单文件中:

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

但是当我试图读取放置在以下位置的文件的内容时:

/data/misc/wifi/wpa_supplicant.conf

我总是得到以下异常:

 /data/misc/wifi/wpa_supplicant.conf: open failed: EACCES (Permission denied)

我应该使用而不是 shell 命令的 inputStream 输出字符串吗?外汇:

tail /data/misc/wifi/wpa_supplicant.conf

请问我该如何解决这个问题?

非常感谢您的任何建议。

4

1 回答 1

-1

您是否有理由尝试通过编写应用程序来做到这一点?

您正在执行 su,但该命令会提升您未实例化的 shell 中的权限。您必须以 root 身份运行代码。此时正常读取文件。

于 2015-09-29T21:46:33.110 回答