Android 获取扩展名为的完整文件名
我有一个方法,它应该返回contentResolver根据所选文件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
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
值也是如此。我明白了,在这种情况下,我必须有点创造性才能保留名称和扩展名。干杯