Android的画廊在奇巧返回不同的URI Intent.ACTION_GET_CONTENT [英] Android Gallery on KitKat returns different Uri for Intent.ACTION_GET_CONTENT
本文介绍了Android的画廊在奇巧返回不同的URI Intent.ACTION_GET_CONTENT的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
奇巧之前(或新的画廊前)
在 Intent.ACTION_GET_CONTENT
返回
一个URI这样的
内容://媒体/外部/图片/媒体/ 3951
Before Kitkat (or before the new Gallery)
the Intent.ACTION_GET_CONTENT
returned
a Uri like this
content://media/external/images/media/3951
.
使用ContentResolver的和quering为
MediaStore.Images.Media.DATA
返回的文件的URL。
Using the ContentResolver and quering for
MediaStore.Images.Media.DATA
returned the file URL.
在奇巧但是图库返回的URI(通过最后)是这样的:
In Kitkat however the Gallery returns a Uri (via "Last") like this:
content://com.android.providers.media.documents/document/image:3951
如何来处理呢?
How to handle this?
推荐答案
试试这个:
if (Build.VERSION.SDK_INT <19){
Intent intent = new Intent();
intent.setType("image/jpeg");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, getResources().getString(R.string.select_picture)),GALLERY_INTENT_CALLED);
} else {
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("image/jpeg");
startActivityForResult(intent, GALLERY_KITKAT_INTENT_CALLED);
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode != Activity.RESULT_OK) return;
if (null == data) return;
Uri originalUri = null;
if (requestCode == GALLERY_INTENT_CALLED) {
originalUri = data.getData();
} else if (requestCode == GALLERY_KITKAT_INTENT_CALLED) {
originalUri = data.getData();
final int takeFlags = data.getFlags()
& (Intent.FLAG_GRANT_READ_URI_PERMISSION
| Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
// Check for the freshest data.
getContentResolver().takePersistableUriPermission(originalUri, takeFlags);
}
loadSomeStreamAsynkTask(originalUri);
}
可能需要
@燮pressLint(NewApi)
@SuppressLint("NewApi")
为
takePersistableUriPermission
takePersistableUriPermission
这篇关于Android的画廊在奇巧返回不同的URI Intent.ACTION_GET_CONTENT的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文