Android 获取扩展名为的完整文件名

Android 获取扩展名为的完整文件名,android,android-contentresolver,Android,Android Contentresolver,我有一个方法,它应该返回contentResolver根据所选文件URI返回的文件名和文件大小,但有时所选文件没有扩展名。我正在寻找一种方法来获得完整的文件名及其扩展名,或者以某种方式确定文件类型。下面是我目前的方法 //This is the intent which triggers the file choosing Intent fileIntent = new Intent( ); fileIntent.setType( "*/*" ); fileIn

我有一个方法,它应该返回contentResolver根据所选文件
URI
返回的文件名和文件大小,但有时所选文件没有扩展名。我正在寻找一种方法来获得完整的文件名及其扩展名,或者以某种方式确定文件类型。下面是我目前的方法

    //This is the intent which triggers the file choosing
    Intent fileIntent = new Intent(  );
    fileIntent.setType( "*/*" );
    fileIntent.setAction( Intent.ACTION_GET_CONTENT );
    fileIntent.putExtra( Intent.EXTRA_LOCAL_ONLY, true );
    startActivityForResult( fileIntent, REQUEST_CODE_FILE );

    //Method in onActivityResult
    Uri selectedFile = intent.getData();
    Cursor cursor = null;
    String fileName = null;
    int fileSize = 0;
    try {
        cursor = getContentResolver().query( selectedFile, null, null, null, null );
        cursor.moveToFirst();
        fileName = cursor.getString( cursor.getColumnIndex( OpenableColumns.DISPLAY_NAME ));
        fileSize = cursor.getInt( cursor.getColumnIndex( OpenableColumns.SIZE ) );
    }catch( Exception ex ){
        ex.printStackTrace();
    }finally {
        if( cursor != null ) {
            cursor.close();
        }
    }
我正在寻找一种方法来获得完整的文件名及其扩展名

OpenableColumns.DISPLAY\u NAME
不必是文件名

或确定文件类型的方法


ContentResolver
上调用
getType()
,提供
Uri
。这应该会为
Uri

返回一个有效的MIME类型,我明白了,所以要清楚,没有真正的方法可以通过
ContentResolver
获取扩展名为的完整文件名?感谢您对
getType()
@kabuto178的建议:请理解
Uri
可能不是文件。您所问的问题相当于“如何强制Web服务器为URL提供扩展名为的完整文件名?”答案是,您不能,部分原因是URL可能不指向文件。相反,它可能是动态生成的。Android上的
Uri
值也是如此。我明白了,在这种情况下,我必须有点创造性才能保留名称和扩展名。干杯