public void gotoSelectFile() {
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
// intent.setType("file");
//intent.setType(“image/*”);//图片
//intent.setType(“audio/*”); //音频
//intent.setType(“video/*”); //视频
//intent.setType(“video/*;image/*”);//视频+图片
intent.setType("*/*");//无类型限制
intent.addCategory(Intent.CATEGORY_OPENABLE);
try {
startActivityForResult(Intent.createChooser(intent, "选择文件"), 1);
} catch (android.content.ActivityNotFoundException ex) {
Toast.makeText(mContext, "未找到文件管理应用,请安装文件管理应用后再试",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK){
try {
String path = "";
if (Build.VERSION.SDK_INT >= 19) {
path = handleImageOnKitKat(mContext, data);
} else {
path = handleImageBeforeKitKat(mContext, data);
}
//do somethings
} catch (Exception e) {
e.printStackTrace();
}
}
}
@TargetApi(Build.VERSION_CODES.KITKAT)
public static String handleImageOnKitKat(Context context, Intent data) {
Uri uri = data.getData();
if (DocumentsContract.isDocumentUri(context, uri)) {
String docId = DocumentsContract.getDocumentId(uri);
if ("com.android.externalstorage.documents".equals(uri.getAuthority())){
final String[] split = docId.split(":");
final String type = split[0];
if ("primary".equalsIgnoreCase(type)) {
return Environment.getExternalStorageDirectory() + "/" + split[1];
}
} else if ("com.android.providers.media.documents".equals(uri.getAuthority())) {
String id = docId.split(":")[1];
String selection = MediaStore.Images.Media._ID + "=" + id;
String type = docId.split(":")[0];
Uri contentUri = null;
if (type.equalsIgnoreCase("image")) {
contentUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
} else if (type.equalsIgnoreCase("audio")) {
contentUri = MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;
} else if (type.equalsIgnoreCase("video")) {
contentUri = MediaStore.Video.Media.EXTERNAL_CONTENT_URI;
}
return getPath(context, contentUri, selection);
} else if ("com.android.providers.media.downloads.documents".equals(uri.getAuthority())) {
Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),
Long.valueOf(docId));
return getPath(context, contentUri, null);
} else if ("content".equals(uri.getAuthority())) {
return getPath(context, uri, null);
}
}else {
return uri.getPath();
}
return "";
}
public static String handleImageBeforeKitKat(Context context, Intent data) {
Uri uri = data.getData();
return getPath(context, uri, null);
}
private static String getPath(Context context, Uri uri, String selection) {
String path = null;
Cursor cursor = context.getContentResolver().query(uri, null, selection, null, null);
if (cursor != null) {
if (cursor.moveToFirst()) {
path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));
}
cursor.close();
}
return path;
}
更多推荐
Android使用Intent.ACTION_GET_CONTENT选择文件笔记
发布评论