handle a couple more Pick intents
This commit is contained in:
parent
75e4f6c8ab
commit
971141652b
2 changed files with 33 additions and 13 deletions
|
@ -23,12 +23,10 @@
|
|||
<intent-filter>
|
||||
<action android:name="android.intent.action.PICK"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<data android:mimeType="vnd.android.cursor.dir/image"/>
|
||||
</intent-filter>
|
||||
|
||||
<intent-filter>
|
||||
<action android:name="android.intent.action.PICK"/>
|
||||
<category android:name="android.intent.category.DEFAULT"/>
|
||||
<data android:mimeType="image/*"/>
|
||||
<data android:mimeType="video/*"/>
|
||||
<data android:mimeType="vnd.android.cursor.dir/image"/>
|
||||
<data android:mimeType="vnd.android.cursor.dir/video"/>
|
||||
</intent-filter>
|
||||
|
||||
|
|
|
@ -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();
|
||||
if (mIsGetImageContentIntent || mIsGetVideoContentIntent) {
|
||||
final String path = data.getData().getPath();
|
||||
final Uri uri = Uri.fromFile(new File(path));
|
||||
if (mIsGetImageContentIntent || mIsGetVideoContentIntent) {
|
||||
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);
|
||||
|
|
Loading…
Reference in a new issue