Android模拟器不允许SD读写

时间:2018-07-12 18:38:06

标签: android emulation sd-card

好的,这是怎么回事。

过去两天我一直在努力解决这个问题,但我没有运气。

症状

我的应用程序在AsyncTask中下载一个文件,并将其存储在外部SD卡上。但是,在Android仿真器中运行时,它无法读写SD卡。

我遇到的主要错误是“只读”错误。可以通过重新安装rootfs 更改/ mnt / sdcard 来“解决”,但是随后出现错误,提示没有文件存在,并且无法使用我的应用程序创建目录。

我已尝试解决的问题:

将rootfs重新安装为rw和chmod 777 / mnt /

结果:文件不存在

编辑AVD配置文件以添加“ hw.sdCard =是。

结果:不变。

感谢您的帮助!

谢谢!

丹尼尔

编辑:添加下载/保存代码

public class FileDownloader extends AsyncTask<String, Integer, File> {

    private static final String TAG = "FileDownloader";
    private int length = 0;

    @Override
    protected File doInBackground(String... strings) {
        try {
            String[] fileSplit = strings[0].split("/");
            String fileName = fileSplit[fileSplit.length - 1];
            File intoFile = new File(Updater.GetUpdateFolderPath(), fileName);

            if(!intoFile.exists()){
                intoFile.mkdirs();
                intoFile.createNewFile();
            }

            URL u = new URL(strings[0]);
            URLConnection conn = u.openConnection();
            int contentLength = conn.getContentLength();
            this.length = contentLength;

            DataInputStream stream = new DataInputStream(u.openStream());

            int progress = 0;

            byte[] buffer = new byte[contentLength];
            while (stream.read(buffer) != -1) {
                progress++;
                publishProgress(progress);
            }
            stream.close();

            FileOutputStream fos = new FileOutputStream(intoFile);
            fos.write(buffer);
            fos.flush();
            fos.close();

            return intoFile;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        super.onProgressUpdate(values);
        Log.d(TAG, values[0] + ":" + length);
    }
}

0 个答案:

没有答案