首页 > 解决方案 > Android W/System.err:删除失败:ENOENT(没有这样的文件或目录)

问题描述

我想使用 picasso 库从 url 共享图像,首先加载位图,然后与文本共享图像,它可以工作,但在某些情况下它不起作用,我收到此消息

W/System.err: remove failed: ENOENT (No such file or directory) : /data/data/is.com.raisse.fortniteguide/cache/picasso-cache/journal.tmp

我不知道这条消息的原因这是我的代码

myViewHolder.shareImg.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View view) {

                    myViewHolder.progressBar.setVisibility(View.VISIBLE);

                    @SuppressLint("HandlerLeak") final Handler handler = new Handler(){
                        @Override
                        public void handleMessage(Message msg) {

                            Picasso.get().load(newsLst.get(position).getImgUri()).into(new Target() {
                                @Override public void onBitmapLoaded(Bitmap bitmap, Picasso.LoadedFrom from) {
                                    Intent i = new Intent(Intent.ACTION_SEND);
                                    i.putExtra(Intent.EXTRA_TEXT, newsLst.get(position).getUrl());
                                    i.setType("image/*");
                                    i.putExtra(Intent.EXTRA_STREAM, getLocalBitmapUri(bitmap));
                                    myViewHolder.progressBar.setVisibility(View.GONE);
                                    context.startActivity(Intent.createChooser(i, "Share Image"));
                                }

                                @Override
                                public void onBitmapFailed(Exception e, Drawable errorDrawable) {
                                    myViewHolder.progressBar.setVisibility(View.GONE);
                                    Log.d("Picasso","===========> Error"+e.getMessage());

                                }
                                @Override public void onPrepareLoad(Drawable placeHolderDrawable) { }
                            });

                            super.handleMessage(msg);
                        }
                    };

                    new Thread(new Runnable() {
                        @Override
                        public void run() {

                            handler.sendEmptyMessage(1);

                        }
                    }).start();

                }
            });

getLocalBitmapUri 方法:

private Uri getLocalBitmapUri(Bitmap bmp) {
    Uri bmpUri = null;
    try {

        File file =  new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES), "share_image_" + System.currentTimeMillis() + ".png");
        FileOutputStream out = new FileOutputStream(file);
        bmp.compress(Bitmap.CompressFormat.PNG, 90, out);
        out.close();
        bmpUri = Uri.fromFile(file);
    } catch (IOException e) {
        e.printStackTrace();
    }
    return bmpUri;
}

标签: androidandroid-studiopicasso

解决方案


推荐阅读