Android: как прочитать содержимое файла wpa_supplicant.conf на рутированном устройстве?

У меня есть следующая функция, которая должна возвращать содержимое файла 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)

Должен ли я использовать вместо inputStream Выходной stred команды оболочки? Fxp:

tail /data/misc/wifi/wpa_supplicant.conf

Как я могу решить эту проблему, пожалуйста?

Большое спасибо за любые советы.

1 ответ

Есть ли причина, по которой вы пытаетесь сделать это, написав заявление?

Вы выполняете su, но эта команда повышает привилегии в оболочке, экземпляры которой вы не создаете. Вам придется запустить код AS root. Прочитайте файл обычно в этот момент.

Другие вопросы по тегам