diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index e2e15e36..e6f9c562 100755
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -5,7 +5,7 @@
-
+
diff --git a/app/src/main/java/awais/instagrabber/dialogs/MediaPickerBottomDialogFragment.java b/app/src/main/java/awais/instagrabber/dialogs/MediaPickerBottomDialogFragment.java
index 15474032..d36cb9dd 100644
--- a/app/src/main/java/awais/instagrabber/dialogs/MediaPickerBottomDialogFragment.java
+++ b/app/src/main/java/awais/instagrabber/dialogs/MediaPickerBottomDialogFragment.java
@@ -26,6 +26,7 @@ import awais.instagrabber.R;
import awais.instagrabber.adapters.MediaItemsAdapter;
import awais.instagrabber.databinding.LayoutMediaPickerBinding;
import awais.instagrabber.utils.MediaController;
+import awais.instagrabber.utils.PermissionUtils;
import awais.instagrabber.utils.TextUtils;
import awais.instagrabber.viewmodels.MediaPickerViewModel;
@@ -120,10 +121,10 @@ public class MediaPickerBottomDialogFragment extends BottomSheetDialogFragment {
if (requestCode == ATTACH_MEDIA_REQUEST_CODE) {
final Context context = getContext();
if (context == null) return;
- // final boolean hasAttachMediaPerms = PermissionUtils.hasAttachMediaPerms(context);
- // if (hasAttachMediaPerms) {
- viewModel.loadMedia(context);
- // }
+ final boolean hasAttachMediaPerms = PermissionUtils.hasAttachMediaPerms(context);
+ if (hasAttachMediaPerms) {
+ viewModel.loadMedia(context);
+ }
}
}
@@ -132,10 +133,10 @@ public class MediaPickerBottomDialogFragment extends BottomSheetDialogFragment {
setupAlbumPicker();
final Context context = getContext();
if (context == null) return;
- // if (!PermissionUtils.hasAttachMediaPerms(context)) {
- // PermissionUtils.requestAttachMediaPerms(this, ATTACH_MEDIA_REQUEST_CODE);
- // return;
- // }
+ if (!PermissionUtils.hasAttachMediaPerms(context)) {
+ PermissionUtils.requestAttachMediaPerms(this, ATTACH_MEDIA_REQUEST_CODE);
+ return;
+ }
viewModel.loadMedia(context);
}
diff --git a/app/src/main/java/awais/instagrabber/utils/MediaController.java b/app/src/main/java/awais/instagrabber/utils/MediaController.java
index 9ca8e318..237dd85a 100644
--- a/app/src/main/java/awais/instagrabber/utils/MediaController.java
+++ b/app/src/main/java/awais/instagrabber/utils/MediaController.java
@@ -87,83 +87,83 @@ public class MediaController {
Cursor cursor = null;
try {
- // if (PermissionUtils.hasAttachMediaPerms(context)) {
- cursor = MediaStore.Images.Media.query(context.getContentResolver(),
- MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
- PROJECTION_PHOTOS,
- null,
- null,
- (Build.VERSION.SDK_INT > 28
- ? MediaStore.Images.Media.DATE_TAKEN
- : MediaStore.Images.Media.DATE_MODIFIED) + " DESC");
- if (cursor != null) {
- int imageIdColumn = cursor.getColumnIndex(MediaStore.Images.Media._ID);
- int bucketIdColumn = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID);
- int bucketNameColumn = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
- int dataColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
- int dateColumn = cursor.getColumnIndex(Build.VERSION.SDK_INT > 28 ? MediaStore.Images.Media.DATE_TAKEN
- : MediaStore.Images.Media.DATE_MODIFIED);
- int orientationColumn = cursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION);
- int widthColumn = cursor.getColumnIndex(MediaStore.Images.Media.WIDTH);
- int heightColumn = cursor.getColumnIndex(MediaStore.Images.Media.HEIGHT);
- int sizeColumn = cursor.getColumnIndex(MediaStore.Images.Media.SIZE);
-
- while (cursor.moveToNext()) {
- String path = cursor.getString(dataColumn);
- if (TextUtils.isEmpty(path)) {
- continue;
- }
+ if (PermissionUtils.hasAttachMediaPerms(context)) {
+ cursor = MediaStore.Images.Media.query(context.getContentResolver(),
+ MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
+ PROJECTION_PHOTOS,
+ null,
+ null,
+ (Build.VERSION.SDK_INT > 28
+ ? MediaStore.Images.Media.DATE_TAKEN
+ : MediaStore.Images.Media.DATE_MODIFIED) + " DESC");
+ if (cursor != null) {
+ int imageIdColumn = cursor.getColumnIndex(MediaStore.Images.Media._ID);
+ int bucketIdColumn = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_ID);
+ int bucketNameColumn = cursor.getColumnIndex(MediaStore.Images.Media.BUCKET_DISPLAY_NAME);
+ int dataColumn = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
+ int dateColumn = cursor.getColumnIndex(Build.VERSION.SDK_INT > 28 ? MediaStore.Images.Media.DATE_TAKEN
+ : MediaStore.Images.Media.DATE_MODIFIED);
+ int orientationColumn = cursor.getColumnIndex(MediaStore.Images.Media.ORIENTATION);
+ int widthColumn = cursor.getColumnIndex(MediaStore.Images.Media.WIDTH);
+ int heightColumn = cursor.getColumnIndex(MediaStore.Images.Media.HEIGHT);
+ int sizeColumn = cursor.getColumnIndex(MediaStore.Images.Media.SIZE);
+
+ while (cursor.moveToNext()) {
+ String path = cursor.getString(dataColumn);
+ if (TextUtils.isEmpty(path)) {
+ continue;
+ }
- int imageId = cursor.getInt(imageIdColumn);
- int bucketId = cursor.getInt(bucketIdColumn);
- String bucketName = cursor.getString(bucketNameColumn);
- long dateTaken = cursor.getLong(dateColumn);
- int orientation = cursor.getInt(orientationColumn);
- int width = cursor.getInt(widthColumn);
- int height = cursor.getInt(heightColumn);
- long size = cursor.getLong(sizeColumn);
+ int imageId = cursor.getInt(imageIdColumn);
+ int bucketId = cursor.getInt(bucketIdColumn);
+ String bucketName = cursor.getString(bucketNameColumn);
+ long dateTaken = cursor.getLong(dateColumn);
+ int orientation = cursor.getInt(orientationColumn);
+ int width = cursor.getInt(widthColumn);
+ int height = cursor.getInt(heightColumn);
+ long size = cursor.getLong(sizeColumn);
- MediaEntry mediaEntry = new MediaEntry(bucketId, imageId, dateTaken, path, orientation, -1, false, width, height, size);
+ MediaEntry mediaEntry = new MediaEntry(bucketId, imageId, dateTaken, path, orientation, -1, false, width, height, size);
- if (allPhotosAlbum == null) {
- allPhotosAlbum = new AlbumEntry(0, context.getString(R.string.all_photos), mediaEntry);
- photoAlbumsSorted.add(0, allPhotosAlbum);
- }
- if (allMediaAlbum == null) {
- allMediaAlbum = new AlbumEntry(0, context.getString(R.string.all_media), mediaEntry);
- mediaAlbumsSorted.add(0, allMediaAlbum);
- }
- allPhotosAlbum.addPhoto(mediaEntry);
- allMediaAlbum.addPhoto(mediaEntry);
-
- AlbumEntry albumEntry = mediaAlbums.get(bucketId);
- if (albumEntry == null) {
- albumEntry = new AlbumEntry(bucketId, bucketName, mediaEntry);
- mediaAlbums.put(bucketId, albumEntry);
- if (mediaCameraAlbumId == null && cameraFolder != null && path.startsWith(cameraFolder)) {
- mediaAlbumsSorted.add(0, albumEntry);
- mediaCameraAlbumId = bucketId;
- } else {
- mediaAlbumsSorted.add(albumEntry);
+ if (allPhotosAlbum == null) {
+ allPhotosAlbum = new AlbumEntry(0, context.getString(R.string.all_photos), mediaEntry);
+ photoAlbumsSorted.add(0, allPhotosAlbum);
}
- }
- albumEntry.addPhoto(mediaEntry);
-
- albumEntry = photoAlbums.get(bucketId);
- if (albumEntry == null) {
- albumEntry = new AlbumEntry(bucketId, bucketName, mediaEntry);
- photoAlbums.put(bucketId, albumEntry);
- if (photoCameraAlbumId == null && cameraFolder != null && path.startsWith(cameraFolder)) {
- photoAlbumsSorted.add(0, albumEntry);
- photoCameraAlbumId = bucketId;
- } else {
- photoAlbumsSorted.add(albumEntry);
+ if (allMediaAlbum == null) {
+ allMediaAlbum = new AlbumEntry(0, context.getString(R.string.all_media), mediaEntry);
+ mediaAlbumsSorted.add(0, allMediaAlbum);
+ }
+ allPhotosAlbum.addPhoto(mediaEntry);
+ allMediaAlbum.addPhoto(mediaEntry);
+
+ AlbumEntry albumEntry = mediaAlbums.get(bucketId);
+ if (albumEntry == null) {
+ albumEntry = new AlbumEntry(bucketId, bucketName, mediaEntry);
+ mediaAlbums.put(bucketId, albumEntry);
+ if (mediaCameraAlbumId == null && cameraFolder != null && path.startsWith(cameraFolder)) {
+ mediaAlbumsSorted.add(0, albumEntry);
+ mediaCameraAlbumId = bucketId;
+ } else {
+ mediaAlbumsSorted.add(albumEntry);
+ }
+ }
+ albumEntry.addPhoto(mediaEntry);
+
+ albumEntry = photoAlbums.get(bucketId);
+ if (albumEntry == null) {
+ albumEntry = new AlbumEntry(bucketId, bucketName, mediaEntry);
+ photoAlbums.put(bucketId, albumEntry);
+ if (photoCameraAlbumId == null && cameraFolder != null && path.startsWith(cameraFolder)) {
+ photoAlbumsSorted.add(0, albumEntry);
+ photoCameraAlbumId = bucketId;
+ } else {
+ photoAlbumsSorted.add(albumEntry);
+ }
}
+ albumEntry.addPhoto(mediaEntry);
}
- albumEntry.addPhoto(mediaEntry);
}
}
- // }
} catch (Throwable e) {
Log.e(TAG, "loadGalleryAlbums: ", e);
} finally {
@@ -177,79 +177,79 @@ public class MediaController {
}
try {
- // if (PermissionUtils.hasAttachMediaPerms(context)) {
- cursor = MediaStore.Images.Media.query(context.getContentResolver(),
- MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
- PROJECTION_VIDEO,
- MediaStore.Video.Media.MIME_TYPE + "=?",
- new String[]{"video/mp4"},
- (Build.VERSION.SDK_INT > 28
- ? MediaStore.Video.Media.DATE_TAKEN
- : MediaStore.Video.Media.DATE_MODIFIED) + " DESC");
- if (cursor != null) {
- int imageIdColumn = cursor.getColumnIndex(MediaStore.Video.Media._ID);
- int bucketIdColumn = cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_ID);
- int bucketNameColumn = cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_DISPLAY_NAME);
- int dataColumn = cursor.getColumnIndex(MediaStore.Video.Media.DATA);
- int dateColumn = cursor.getColumnIndex(Build.VERSION.SDK_INT > 28 ? MediaStore.Video.Media.DATE_TAKEN
- : MediaStore.Video.Media.DATE_MODIFIED);
- int durationColumn = cursor.getColumnIndex(MediaStore.Video.Media.DURATION);
- int widthColumn = cursor.getColumnIndex(MediaStore.Video.Media.WIDTH);
- int heightColumn = cursor.getColumnIndex(MediaStore.Video.Media.HEIGHT);
- int sizeColumn = cursor.getColumnIndex(MediaStore.Video.Media.SIZE);
-
- while (cursor.moveToNext()) {
- String path = cursor.getString(dataColumn);
- if (TextUtils.isEmpty(path)) {
- continue;
- }
+ if (PermissionUtils.hasAttachMediaPerms(context)) {
+ cursor = MediaStore.Images.Media.query(context.getContentResolver(),
+ MediaStore.Video.Media.EXTERNAL_CONTENT_URI,
+ PROJECTION_VIDEO,
+ MediaStore.Video.Media.MIME_TYPE + "=?",
+ new String[]{"video/mp4"},
+ (Build.VERSION.SDK_INT > 28
+ ? MediaStore.Video.Media.DATE_TAKEN
+ : MediaStore.Video.Media.DATE_MODIFIED) + " DESC");
+ if (cursor != null) {
+ int imageIdColumn = cursor.getColumnIndex(MediaStore.Video.Media._ID);
+ int bucketIdColumn = cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_ID);
+ int bucketNameColumn = cursor.getColumnIndex(MediaStore.Video.Media.BUCKET_DISPLAY_NAME);
+ int dataColumn = cursor.getColumnIndex(MediaStore.Video.Media.DATA);
+ int dateColumn = cursor.getColumnIndex(Build.VERSION.SDK_INT > 28 ? MediaStore.Video.Media.DATE_TAKEN
+ : MediaStore.Video.Media.DATE_MODIFIED);
+ int durationColumn = cursor.getColumnIndex(MediaStore.Video.Media.DURATION);
+ int widthColumn = cursor.getColumnIndex(MediaStore.Video.Media.WIDTH);
+ int heightColumn = cursor.getColumnIndex(MediaStore.Video.Media.HEIGHT);
+ int sizeColumn = cursor.getColumnIndex(MediaStore.Video.Media.SIZE);
+
+ while (cursor.moveToNext()) {
+ String path = cursor.getString(dataColumn);
+ if (TextUtils.isEmpty(path)) {
+ continue;
+ }
- int imageId = cursor.getInt(imageIdColumn);
- int bucketId = cursor.getInt(bucketIdColumn);
- String bucketName = cursor.getString(bucketNameColumn);
- long dateTaken = cursor.getLong(dateColumn);
- long duration = cursor.getLong(durationColumn);
- int width = cursor.getInt(widthColumn);
- int height = cursor.getInt(heightColumn);
- long size = cursor.getLong(sizeColumn);
-
- MediaEntry mediaEntry = new MediaEntry(bucketId, imageId, dateTaken, path, -1, duration, true, width, height, size);
-
- if (allVideosAlbum == null) {
- allVideosAlbum = new AlbumEntry(0, context.getString(R.string.all_videos), mediaEntry);
- allVideosAlbum.videoOnly = true;
- int index = 0;
- if (allMediaAlbum != null) {
- index++;
+ int imageId = cursor.getInt(imageIdColumn);
+ int bucketId = cursor.getInt(bucketIdColumn);
+ String bucketName = cursor.getString(bucketNameColumn);
+ long dateTaken = cursor.getLong(dateColumn);
+ long duration = cursor.getLong(durationColumn);
+ int width = cursor.getInt(widthColumn);
+ int height = cursor.getInt(heightColumn);
+ long size = cursor.getLong(sizeColumn);
+
+ MediaEntry mediaEntry = new MediaEntry(bucketId, imageId, dateTaken, path, -1, duration, true, width, height, size);
+
+ if (allVideosAlbum == null) {
+ allVideosAlbum = new AlbumEntry(0, context.getString(R.string.all_videos), mediaEntry);
+ allVideosAlbum.videoOnly = true;
+ int index = 0;
+ if (allMediaAlbum != null) {
+ index++;
+ }
+ if (allPhotosAlbum != null) {
+ index++;
+ }
+ mediaAlbumsSorted.add(index, allVideosAlbum);
}
- if (allPhotosAlbum != null) {
- index++;
+ if (allMediaAlbum == null) {
+ allMediaAlbum = new AlbumEntry(0, context.getString(R.string.all_media), mediaEntry);
+ mediaAlbumsSorted.add(0, allMediaAlbum);
}
- mediaAlbumsSorted.add(index, allVideosAlbum);
- }
- if (allMediaAlbum == null) {
- allMediaAlbum = new AlbumEntry(0, context.getString(R.string.all_media), mediaEntry);
- mediaAlbumsSorted.add(0, allMediaAlbum);
- }
- allVideosAlbum.addPhoto(mediaEntry);
- allMediaAlbum.addPhoto(mediaEntry);
-
- AlbumEntry albumEntry = mediaAlbums.get(bucketId);
- if (albumEntry == null) {
- albumEntry = new AlbumEntry(bucketId, bucketName, mediaEntry);
- mediaAlbums.put(bucketId, albumEntry);
- if (mediaCameraAlbumId == null && cameraFolder != null && path.startsWith(cameraFolder)) {
- mediaAlbumsSorted.add(0, albumEntry);
- mediaCameraAlbumId = bucketId;
- } else {
- mediaAlbumsSorted.add(albumEntry);
+ allVideosAlbum.addPhoto(mediaEntry);
+ allMediaAlbum.addPhoto(mediaEntry);
+
+ AlbumEntry albumEntry = mediaAlbums.get(bucketId);
+ if (albumEntry == null) {
+ albumEntry = new AlbumEntry(bucketId, bucketName, mediaEntry);
+ mediaAlbums.put(bucketId, albumEntry);
+ if (mediaCameraAlbumId == null && cameraFolder != null && path.startsWith(cameraFolder)) {
+ mediaAlbumsSorted.add(0, albumEntry);
+ mediaCameraAlbumId = bucketId;
+ } else {
+ mediaAlbumsSorted.add(albumEntry);
+ }
}
- }
- albumEntry.addPhoto(mediaEntry);
+ albumEntry.addPhoto(mediaEntry);
+ }
}
}
- // }
} catch (Throwable e) {
Log.e(TAG, "loadGalleryAlbums: ", e);
} finally {
diff --git a/app/src/main/java/awais/instagrabber/utils/PermissionUtils.java b/app/src/main/java/awais/instagrabber/utils/PermissionUtils.java
index aaf510d5..8b92fe1d 100644
--- a/app/src/main/java/awais/instagrabber/utils/PermissionUtils.java
+++ b/app/src/main/java/awais/instagrabber/utils/PermissionUtils.java
@@ -11,31 +11,30 @@ import androidx.core.content.PermissionChecker;
import androidx.fragment.app.Fragment;
import static android.Manifest.permission.CAMERA;
+import static android.Manifest.permission.READ_EXTERNAL_STORAGE;
import static android.Manifest.permission.RECORD_AUDIO;
import static androidx.core.content.PermissionChecker.checkSelfPermission;
public class PermissionUtils {
public static final String[] AUDIO_RECORD_PERMS = new String[]{RECORD_AUDIO};
- // public static final String[] ATTACH_MEDIA_PERMS = new String[]{READ_EXTERNAL_STORAGE};
+ public static final String[] ATTACH_MEDIA_PERMS = new String[]{READ_EXTERNAL_STORAGE};
public static final String[] CAMERA_PERMS = new String[]{CAMERA};
public static boolean hasAudioRecordPerms(@NonNull final Context context) {
- return // checkSelfPermission(context, WRITE_EXTERNAL_STORAGE) == PermissionChecker.PERMISSION_GRANTED
- // &&
- checkSelfPermission(context, RECORD_AUDIO) == PermissionChecker.PERMISSION_GRANTED;
+ return checkSelfPermission(context, RECORD_AUDIO) == PermissionChecker.PERMISSION_GRANTED;
}
public static void requestAudioRecordPerms(final Fragment fragment, final int requestCode) {
fragment.requestPermissions(AUDIO_RECORD_PERMS, requestCode);
}
- // public static boolean hasAttachMediaPerms(@NonNull final Context context) {
- // return checkSelfPermission(context, READ_EXTERNAL_STORAGE) == PermissionChecker.PERMISSION_GRANTED;
- // }
+ public static boolean hasAttachMediaPerms(@NonNull final Context context) {
+ return checkSelfPermission(context, READ_EXTERNAL_STORAGE) == PermissionChecker.PERMISSION_GRANTED;
+ }
- // public static void requestAttachMediaPerms(final Fragment fragment, final int requestCode) {
- // fragment.requestPermissions(ATTACH_MEDIA_PERMS, requestCode);
- // }
+ public static void requestAttachMediaPerms(final Fragment fragment, final int requestCode) {
+ fragment.requestPermissions(ATTACH_MEDIA_PERMS, requestCode);
+ }
public static boolean hasCameraPerms(final Context context) {
return ContextCompat.checkSelfPermission(context, CAMERA) == PackageManager.PERMISSION_GRANTED;