使用不同的方法处理不同类型的URI
在Android中使用文件选择器时,可能会遇到返回不同类型URI的问题。这些URI包括“file://”,“content://”,“android.resource://”等等。不同类型的URI需要使用不同的方法来处理。
下面是一个处理不同类型URI的示例代码:
public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);
if(requestCode == PICKFILE_RESULT_CODE && resultCode == RESULT_OK) {
// Get the URI of the selected file
Uri uri = data.getData();
// Check the uri scheme
if(uri.getScheme().equals("content")) {
// Handle the content scheme
Cursor cursor = getContentResolver().query(uri, null, null, null, null);
cursor.moveToFirst();
String filePath = cursor.getString(cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA));
cursor.close();
} else if(uri.getScheme().equals("file")) {
// Handle the file scheme
String filePath = uri.getPath();
} else if(uri.getScheme().equals("android.resource")) {
// Handle the android resource scheme
Resources resources = getResources();
int resourceId = resources.getIdentifier(uri.getLastPathSegment(), "drawable", getPackageName());
String filePath = resources.getResourceName(resourceId);
}
}
}
在这个示例代码中,我们使用了getScheme()方法来判断URI的类型,然后使用不同的方法来处理不同类型的URI。这将确保我们可以正确地处理不同类型的URI。