diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 82ad62035..7663fad87 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,12 +23,10 @@ - - - - - + + + diff --git a/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java b/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java index c7759f233..000fa5f23 100644 --- a/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java +++ b/app/src/main/java/com/simplemobiletools/gallery/activities/MainActivity.java @@ -79,6 +79,7 @@ public class MainActivity extends AppCompatActivity mIsGetImageContentIntent = isGetImageContentIntent(intent); mIsGetVideoContentIntent = isGetVideoContentIntent(intent); mIsSetWallpaperIntent = isSetWallpaperIntent(intent); + mIsThirdPartyIntent = mIsPickImageIntent || mIsPickVideoIntent || mIsGetImageContentIntent || mIsGetVideoContentIntent || mIsSetWallpaperIntent; } @@ -356,20 +357,20 @@ public class MainActivity extends AppCompatActivity } private boolean isPickImageIntent(Intent intent) { - return isPickIntent(intent) && intent.getData().equals(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + return isPickIntent(intent) && (hasImageContentData(intent) || isImageType(intent)); } private boolean isPickVideoIntent(Intent intent) { - return isPickIntent(intent) && intent.getData().equals(MediaStore.Video.Media.EXTERNAL_CONTENT_URI); + return isPickIntent(intent) && (hasVideoContentData(intent) || isVideoType(intent)); } private boolean isPickIntent(Intent intent) { - return intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_PICK) && intent.getData() != null; + return intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_PICK); } private boolean isGetContentIntent(Intent intent) { return intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_GET_CONTENT) && - !intent.getType().isEmpty(); + intent.getType() != null; } private boolean isGetImageContentIntent(Intent intent) { @@ -386,19 +387,40 @@ public class MainActivity extends AppCompatActivity return intent != null && intent.getAction() != null && intent.getAction().equals(Intent.ACTION_SET_WALLPAPER); } + private boolean hasImageContentData(Intent intent) { + final Uri data = intent.getData(); + return data != null && data.equals(MediaStore.Images.Media.EXTERNAL_CONTENT_URI); + } + + private boolean hasVideoContentData(Intent intent) { + final Uri data = intent.getData(); + return data != null && data.equals(MediaStore.Video.Media.EXTERNAL_CONTENT_URI); + } + + private boolean isImageType(Intent intent) { + final String type = intent.getType(); + return type != null && (type.startsWith("image/") || type.equals(MediaStore.Images.Media.CONTENT_TYPE)); + } + + private boolean isVideoType(Intent intent) { + final String type = intent.getType(); + return type != null && (type.startsWith("video/") || type.equals(MediaStore.Video.Media.CONTENT_TYPE)); + } + @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (resultCode == RESULT_OK) { if (requestCode == PICK_MEDIA && data != null) { final Intent result = new Intent(); + final String path = data.getData().getPath(); + final Uri uri = Uri.fromFile(new File(path)); if (mIsGetImageContentIntent || mIsGetVideoContentIntent) { - final String path = data.getData().getPath(); - final Uri uri = Uri.fromFile(new File(path)); final String type = Utils.getMimeType(path); result.setDataAndTypeAndNormalize(uri, type); result.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_GRANT_WRITE_URI_PERMISSION); - } else { - result.setData(data.getData()); + } else if (mIsPickImageIntent || mIsPickVideoIntent) { + result.setData(uri); + result.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); } setResult(RESULT_OK, result);