Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.example.wallpep;
- import androidx.annotation.NonNull;
- import androidx.annotation.Nullable;
- import androidx.appcompat.app.AppCompatActivity;
- import androidx.appcompat.widget.Toolbar;
- import android.Manifest;
- import android.annotation.SuppressLint;
- import android.app.ProgressDialog;
- import android.content.Intent;
- import android.os.Bundle;
- import android.os.Environment;
- import android.util.Log;
- import android.view.View;
- import android.webkit.URLUtil;
- import android.widget.ImageView;
- import android.widget.TextView;
- import android.widget.Toast;
- import com.bumptech.glide.Glide;
- import com.downloader.Error;
- import com.downloader.OnCancelListener;
- import com.downloader.OnDownloadListener;
- import com.downloader.OnPauseListener;
- import com.downloader.OnProgressListener;
- import com.downloader.OnStartOrResumeListener;
- import com.downloader.PRDownloader;
- import com.downloader.Progress;
- import com.google.android.material.floatingactionbutton.FloatingActionButton;
- import com.karumi.dexter.Dexter;
- import com.karumi.dexter.MultiplePermissionsReport;
- import com.karumi.dexter.PermissionToken;
- import com.karumi.dexter.listener.PermissionRequest;
- import com.karumi.dexter.listener.multi.MultiplePermissionsListener;
- import java.io.File;
- import java.io.FileOutputStream;
- import java.io.IOException;
- import java.io.OutputStream;
- import java.text.SimpleDateFormat;
- import java.util.ArrayList;
- import java.util.List;
- import java.util.Locale;
- public class GalleryActivity extends AppCompatActivity {
- FloatingActionButton downloadButton, likeButton;
- TextView imageDescription;
- ImageModel imageModel;
- String imageUrl;
- private static final String TAG = "GalleryActivity";
- @Override
- protected void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_gallery);
- downloadButton = findViewById(R.id.download_button_id);
- likeButton = findViewById(R.id.like_button_id);
- imageDescription = findViewById(R.id.image_description);
- Intent intent = getIntent();
- imageModel = intent.getParcelableExtra("imageModel");
- imageDescription.setText(imageModel.getImageDescription());
- Toolbar toolbar = findViewById(R.id.toolbar_id);
- setSupportActionBar(toolbar);
- if (getSupportActionBar() != null) {
- toolbar.setTitle(imageModel.getImageName());
- getSupportActionBar().setDisplayHomeAsUpEnabled(true);
- getSupportActionBar().setDisplayShowHomeEnabled(true);
- }
- toolbar.setNavigationOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- onBackPressed();
- }
- });
- getIncomingIntent();
- PRDownloader.initialize(getApplicationContext());
- downloadButton.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View view) {
- Log.d(TAG, "onClick: ");
- checkPermission();
- }
- });
- }
- private void getIncomingIntent() {
- if (imageModel.getImageUrl() != null) {
- String imageUrl = imageModel.getImageUrl();
- setImage(imageUrl);
- }
- }
- private void setImage(String imageUrl) {
- ImageView imageView = findViewById(R.id.image);
- Glide.with(this).asDrawable().load(imageUrl).into(imageView);
- }
- private void checkPermission() {
- Log.d(TAG, "checkPermission: ");
- Dexter.withContext(GalleryActivity.this)
- .withPermissions(
- Manifest.permission.READ_EXTERNAL_STORAGE,
- Manifest.permission.WRITE_EXTERNAL_STORAGE
- ).withListener(new MultiplePermissionsListener() {
- @Override public void onPermissionsChecked(MultiplePermissionsReport report) {
- if(report.areAllPermissionsGranted()) {
- downloadImage();
- } else {
- Toast.makeText(GalleryActivity.this, "Please allow all permission!", Toast.LENGTH_SHORT).show();
- }
- }
- @Override public void onPermissionRationaleShouldBeShown(List<PermissionRequest> permissions, PermissionToken token) {
- }
- })
- .onSameThread()
- .check();
- }
- private void downloadImage() {
- ProgressDialog progressDialog = new ProgressDialog(this);
- progressDialog.setMessage("Downloading...");
- progressDialog.setCancelable(false);
- progressDialog.show();
- if (imageModel.getImageUrl() != null) {
- imageUrl = imageModel.getImageUrl();
- setImage(imageUrl);
- }
- File file = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS);
- PRDownloader.download(imageUrl, file.getPath(), URLUtil.guessFileName(imageUrl,null,null))
- .build()
- .setOnStartOrResumeListener(new OnStartOrResumeListener() {
- @Override
- public void onStartOrResume() {
- }
- })
- .setOnPauseListener(new OnPauseListener() {
- @Override
- public void onPause() {
- }
- })
- .setOnCancelListener(new OnCancelListener() {
- @Override
- public void onCancel() {
- }
- })
- .setOnProgressListener(new OnProgressListener() {
- @Override
- public void onProgress(Progress progress) {
- long percentage = progress.currentBytes * 100 / progress.totalBytes;
- progressDialog.setMessage("Downloading : "+percentage+" %");
- }
- })
- .start(new OnDownloadListener() {
- @Override
- public void onDownloadComplete() {
- progressDialog.dismiss();
- Toast.makeText(GalleryActivity.this, "Download Complete!", Toast.LENGTH_SHORT).show();
- }
- @Override
- public void onError(Error error) {
- Toast.makeText(GalleryActivity.this, "Some error occur", Toast.LENGTH_SHORT).show();
- }
- });
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement