有時會從其他的檔案瀏覽器擷取路徑,這時根據路徑去資料庫取檔案時會發現不成功,原因是由於android的檔案瀏覽器太多,各自返回的路徑不統一,而android本身的資料庫中的路徑是絕對路徑,即"/mnt"開頭的路徑。
private String getRealPath(Uri fileUrl){
String fileName = null;
Uri filePathUri = fileUrl;
if(fileUrl!= null){
if (fileUrl.getScheme().toString().compareTo("content")==0) //content://開頭的uri
{
Cursor cursor = mContext.getContentResolver().query(videoUrl, null, null, null, null);
if (cursor != null && cursor.moveToFirst())
{
int column_index = cursor.getColumnIndexOrThrow(***.***.***.DATA);
fileName = cursor.getString(column_index); //取出檔案路徑
if(!fileName.startsWith("/mnt")){
//檢查是否有”/mnt“首碼
fileName = "/mnt" + fileName;
}
cursor.close();
}
}else if (videoUrl.getScheme().compareTo("file")==0) //file:///開頭的uri
{
fileName = filePathUri.toString();
fileName = filePathUri.toString().replace("file://", "");
//替換file://
if(!fileName.startsWith("/mnt")){
//加上"/mnt"頭
fileName += "/mnt";
}
}
}
return fileName;
}