将GIF文件保存到存储中

问题描述 投票:0回答:1

我想在内部或外部存储中保存GIF文件(在android应用中)。然后应在图库中找到该文件。我通过滑行下载了gif文件:

    Glide.with(getContext())
    .download(imageUrl)
    .listener(new RequestListener<File>() {
    @Override
    public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<File> target, boolean isFirstResource) {
return false;
}
 @RequiresApi(api = Build.VERSION_CODES.O)
@Override
public boolean onResourceReady(File resource, Object model, Target<File> target, DataSource dataSource, boolean isFirstResource) {
}
return false;


    }
                                                        })
                                                        .submit();
java android save storage gif
1个回答
0
投票

您的使用ftech

implementation "com.tonyodev.fetch2:fetch2:3.0.10"

Androidx使用:

implementation "androidx.tonyodev.fetch2:xfetch2:3.1.4"

下载任何文件

    if (isStoragePermissionGranted()) {
                    fetch = Fetch.Impl.getInstance(fetchConfiguration);

                    String url = nameFileDownload;

                    String file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS) + "/" + nameFileDownload.substring(url.lastIndexOf('/') + 1);
                    ;

                    if (fileExist(file)) {
                        view(null, nameFileDownload.substring(url.lastIndexOf('/') + 1));

                    } else {
                        progress_download.setVisibility(View.VISIBLE);
                        btn_download.setVisibility(View.GONE);
                        final com.tonyodev.fetch2.Request request = new com.tonyodev.fetch2.Request(url, file);
                        request.setPriority(Priority.NORMAL);
                        request.setNetworkType(NetworkType.ALL);

                        fetch.enqueue(request, updatedRequest -> {


                            fetch.addListener(fetchListener);


                            //Request was successfully enqueued for download.
                        }, error -> {
                            progress_download.setVisibility(View.GONE);
                            btn_download.setVisibility(View.VISIBLE);
                            Toast.makeText(MainActivity.this, "feild", Toast.LENGTH_SHORT).show();

                            //An error occurred enqueuing the request.
                        });
                    }

                } else {
                    Toast.makeText(MainActivity.this, "perssion denid", Toast.LENGTH_SHORT).show();
                }

            }

isStoragePermissionGranted:

 public boolean isStoragePermissionGranted() {
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (checkSelfPermission(android.Manifest.permission.WRITE_EXTERNAL_STORAGE)
                == PackageManager.PERMISSION_GRANTED) {
            Log.v("TAG", "Permission is granted");
            return true;
        } else {

            Log.v("TAG", "Permission is revoked");
            ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 1);
            return false;
        }
    } else { //permission is automatically granted on sdk<23 upon installation
        Log.v("TAG", "Permission is granted");
        return true;
    }
}

清单:

   <uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
© www.soinside.com 2019 - 2024. All rights reserved.