gpt4 book ai didi

java - 如何获取使用 Intent.ACTION_OPEN_DOCUMENT 选择的文件的文件扩展名?

转载 作者:行者123 更新时间:2023-11-29 19:06:45 24 4
gpt4 key购买 nike

我想获取我使用 Intent.ACTION_OPEN_DOCUMENT 选择的文件的文件扩展名。如何获取?

这就是我启动选择器的方式:

private void startFilePicker(){
Intent intent = new Intent(Intent.ACTION_OPEN_DOCUMENT);
intent.addCategory(Intent.CATEGORY_OPENABLE);
intent.setType("*/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
startActivityForResult(intent, CODE_ACTION_OPEN_DOCUMENT_FILE);
}

这是选择文件时的回调:

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);


//region New Picker

if (requestCode == CODE_ACTION_OPEN_DOCUMENT_FILE){
if (resultCode == RESULT_OK){

if (data != null){
if (data.getData() != null){
Uri uri = data.getData();
//Get file extension here.
}
}
}
}
}

当我尝试通过 uri.getPath() 获取文件路径时,我得到类似 image:105571acc=1;doc= 9204。所以我无法从路径中获取它。

问题是如何判断选取的文件的扩展名?

最佳答案

创建这两个方法...

public  String getPath(Context context, Uri uri) throws URISyntaxException {
if ("content".equalsIgnoreCase(uri.getScheme())) {
String[] projection = { "_data" };
Cursor cursor = null;
try {
cursor = context.getContentResolver().query(uri, projection, null, null, null);
int column_index = cursor.getColumnIndexOrThrow("_data");
if (cursor.moveToFirst()) {
return cursor.getString(column_index);
}
} catch (Exception e) {
// Eat it
}
}
else if ("file".equalsIgnoreCase(uri.getScheme())) {
return uri.getPath();
}

return null;
}

public String getFileExtension(String filePath){
String extension = "";
try{
extension = filePath.substring(filePath.lastIndexOf("."));
}catch(Exception exception){
e("Err", exception.toString()+"");
}
return extension;
}

然后用这个..

if (data.getData() != null){
try{
Uri uri = data.getData();
//Get file extension here.
String filePath = getPath(YourActivity.this, uri);
String fileExtension = getFileExtension(filePath);
File file = new File(filePath);
}catch(Exception e){
e("Err", e.toString()+"");
}
}

关于java - 如何获取使用 Intent.ACTION_OPEN_DOCUMENT 选择的文件的文件扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46948136/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com