|
5 | 5 | import android.content.Intent;
|
6 | 6 | import android.database.DataSetObserver;
|
7 | 7 | import android.net.Uri;
|
8 |
| -import android.os.Build; |
9 | 8 | import android.os.Bundle;
|
10 | 9 | import android.os.Environment;
|
11 | 10 | import android.os.Handler;
|
|
15 | 14 | import android.view.MenuItem;
|
16 | 15 | import android.view.View;
|
17 | 16 | import android.view.ViewGroup;
|
| 17 | +import android.widget.Toast; |
18 | 18 |
|
19 |
| -import com.google.android.material.snackbar.Snackbar; |
20 | 19 |
|
21 | 20 | import javax.inject.Inject;
|
22 | 21 | import javax.inject.Named;
|
23 | 22 |
|
24 |
| -import androidx.core.app.ActivityCompat; |
25 |
| -import androidx.core.content.ContextCompat; |
26 | 23 | import androidx.fragment.app.Fragment;
|
27 | 24 | import androidx.fragment.app.FragmentManager;
|
28 | 25 | import androidx.fragment.app.FragmentStatePagerAdapter;
|
|
44 | 41 | import fr.free.nrw.commons.mwapi.MediaWikiApi;
|
45 | 42 | import fr.free.nrw.commons.utils.ImageUtils;
|
46 | 43 | import fr.free.nrw.commons.utils.NetworkUtils;
|
| 44 | +import fr.free.nrw.commons.utils.PermissionUtils; |
47 | 45 | import fr.free.nrw.commons.utils.ViewUtil;
|
48 | 46 | import timber.log.Timber;
|
49 | 47 |
|
50 |
| -import static android.Manifest.permission.READ_EXTERNAL_STORAGE; |
| 48 | +import static android.Manifest.permission.WRITE_EXTERNAL_STORAGE; |
51 | 49 | import static android.content.Context.DOWNLOAD_SERVICE;
|
52 |
| -import static android.content.pm.PackageManager.PERMISSION_GRANTED; |
53 | 50 | import static fr.free.nrw.commons.Utils.handleWebUrl;
|
54 | 51 |
|
55 | 52 | public class MediaDetailPagerFragment extends CommonsDaggerSupportFragment implements ViewPager.OnPageChangeListener {
|
@@ -227,20 +224,19 @@ private void downloadMedia(Media m) {
|
227 | 224 | // Modern Android updates the gallery automatically. Yay!
|
228 | 225 | req.allowScanningByMediaScanner();
|
229 | 226 | req.setNotificationVisibility(DownloadManager.Request.VISIBILITY_VISIBLE_NOTIFY_COMPLETED);
|
| 227 | + PermissionUtils.checkPermissionsAndPerformAction(getActivity(), WRITE_EXTERNAL_STORAGE, |
| 228 | + () -> enqueueRequest(req), () -> Toast.makeText(getContext(), |
| 229 | + R.string.download_failed_we_cannot_download_the_file_without_storage_permission, |
| 230 | + Toast.LENGTH_SHORT).show(), R.string.storage_permission, |
| 231 | + R.string.write_storage_permission_rationale); |
230 | 232 |
|
231 |
| - if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && |
232 |
| - ContextCompat.checkSelfPermission(getContext(), READ_EXTERNAL_STORAGE) |
233 |
| - != PERMISSION_GRANTED |
234 |
| - && getView() != null) { |
235 |
| - Snackbar.make(getView(), R.string.read_storage_permission_rationale, |
236 |
| - Snackbar.LENGTH_INDEFINITE).setAction(R.string.ok, |
237 |
| - view -> ActivityCompat.requestPermissions(getActivity(), |
238 |
| - new String[]{READ_EXTERNAL_STORAGE}, 1)).show(); |
239 |
| - } else { |
240 |
| - DownloadManager systemService = (DownloadManager) getActivity().getSystemService(DOWNLOAD_SERVICE); |
241 |
| - if (systemService != null) { |
242 |
| - systemService.enqueue(req); |
243 |
| - } |
| 233 | + } |
| 234 | + |
| 235 | + private void enqueueRequest(DownloadManager.Request req) { |
| 236 | + DownloadManager systemService = |
| 237 | + (DownloadManager) getActivity().getSystemService(DOWNLOAD_SERVICE); |
| 238 | + if (systemService != null) { |
| 239 | + systemService.enqueue(req); |
244 | 240 | }
|
245 | 241 | }
|
246 | 242 |
|
|
0 commit comments