在通过文件浏览器选择文件后,在onActivityResult()中使用getContentResolver().query()获取文件路径的步骤如下:
Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
intent.setType("*/*"); // 设置文件类型为任意类型
intent.addCategory(Intent.CATEGORY_OPENABLE); // 设置可打开的文件
startActivityForResult(intent, REQUEST_CODE_FILE_CHOOSER);
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == REQUEST_CODE_FILE_CHOOSER && resultCode == RESULT_OK) {
Uri fileUri = data.getData();
String filePath = getFileFromUri(fileUri);
// 使用filePath进行后续操作
}
}
private String getFileFromUri(Uri uri) {
String filePath = null;
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(uri, projection, null, null, null);
if (cursor != null && cursor.moveToFirst()) {
int columnIndex = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
filePath = cursor.getString(columnIndex);
cursor.close();
}
return filePath;
}
需要注意的是,上述代码中使用了Android的MediaStore来获取文件路径,因此只适用于选择媒体文件(如图片、音频、视频等)。如果需要选择其他类型的文件,可以根据具体需求修改Intent的setType()方法和查询的projection参数。
推荐的腾讯云相关产品:腾讯云对象存储(COS),它是一种安全、低成本、高可靠的云端存储服务,适用于存储和处理各种类型的文件。你可以通过以下链接了解更多信息:腾讯云对象存储(COS)
领取专属 10元无门槛券
手把手带您无忧上云