有时会从其他的文件浏览器获取路径,这时根据路径去数据库取文件时会发现不成功,原因是由于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;
}

更多相关文章

  1. 在android studio的虚拟机的sd卡上创建文件夹
  2. Android 使用decodeFile方法加载手机磁盘中的图片文件
  3. Android的sqlite3路径
  4. Android AudioRecord录音实时pcm 编码为 aac 文件
  5. android保存文件
  6. Android情景模式、文件管理器 完整示例编程详解
  7. android ndk-build log输出文件

随机推荐

  1. Android防止内存泄露
  2. Android简易计算器----布局_菜单_提示框
  3. Android(安卓)ndk探索之一(利用Android(安
  4. [Android]继承式UI界面布局设计
  5. (转)支付宝 Android(安卓)版使用的开源组件
  6. 别老说要买 iPhone6,三分钟就让你手机价值
  7. Android(安卓)SQLite 数据库详细介绍
  8. Android加载Bitmap出现OutofMemoryError
  9. 直接用 Chrome 扩展来回复 Android(安卓)
  10. Android中的dip,dp,sp,px