@Comatu

Как исправить ошибку failed to make and chown /acct/uid_10058: Read-only file system?

Делаю код по примеру, никак не получается записать файл и прочитать его. Приложение не "вылетает", просто пустое активити.
Вот код:
import android.content.Context;
import android.content.ContextWrapper;
import android.graphics.Bitmap;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.ImageView;

import com.squareup.picasso.Picasso;
import com.squareup.picasso.Target;

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Picasso.with(this).load("http://traderex.ru/wp-content/uploads/2017/09/1-768x408.png").into(picassoImageTarget(getApplicationContext(), "imageDir", "page1.png"));

        ContextWrapper cw = new ContextWrapper(getApplicationContext());
        File directory = cw.getDir("imageDir", Context.MODE_PRIVATE);
        File myImageFile = new File(directory, "page1.png");
        ImageView iView = (ImageView)findViewById(R.id.imageView);

        try {
            Picasso.with(this).load(myImageFile).into(iView);
        } catch (Exception e) {
            e.printStackTrace();
        }
//        Picasso
//                .with(getApplicationContext())
//                .load("http://human-factors.ru/todbook/book_1/pages/page1.png")
//                .into(iView);
    }

    private Target picassoImageTarget(Context context, final String imageDir, final String imageName) {
        Log.d("picassoImageTarget", " picassoImageTarget");
        ContextWrapper cw = new ContextWrapper(context);
        final File directory = cw.getDir(imageDir, Context.MODE_PRIVATE); // path to /data/data/yourapp/app_imageDir
        return new Target() {
            @Override
            public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom from) {
                new Thread(new Runnable() {
                    @Override
                    public void run() {
                        final File myImageFile = new File(directory, imageName); // Create image file
                        FileOutputStream fos = null;
                        try {
                            fos = new FileOutputStream(myImageFile);
                            bitmap.compress(Bitmap.CompressFormat.PNG, 100, fos);
                        } catch (IOException e) {
                            e.printStackTrace();
                        } finally {
                            try {
                                fos.close();
                            } catch (IOException e) {
                                e.printStackTrace();
                            }
                        }
                        Log.i("image", "image saved to >>>" + myImageFile.getAbsolutePath());

                    }
                }).start();
            }

            @Override
            public void onBitmapFailed(Drawable errorDrawable) {
            }
            @Override
            public void onPrepareLoad(Drawable placeHolderDrawable) {
                if (placeHolderDrawable != null) {}
            }
        };
    }

}


Разрешения в манифесте и на чтение, и на запись, и на интернет
  • Вопрос задан
  • 702 просмотра
Решения вопроса 1
@Comatu Автор вопроса
Решение нашёл здесь.
Удалил все устройства через AVD Manager, создал новое устройство. Ошибка пропала
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
@rainmatic
Это же не единственный туториал по сохранению картинки на диск при помощи Picasso. Может быть у людей нет времени искать, ошибка у вас или в туториале. Можно попробовать другие варианты кода той же логики и локализовать ошибку, т.е. понять ошибка в коде или в чем-то еще (например, в разрешениях на запись). Например, вот другой туториал с немного отличным кодом. Попробуйте его и посмотрите, ушла ли ошибка. На худой конец, третий вариант.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы