如何处理内容:// Uri以打开文件

时间:2013-11-29 10:03:12

标签: android url android-contentprovider

我正在使用Android的DownloadManager课程。单击“下载的文件”通知后,它会以Uri方案返回content://。我有一个方法,现在只能使用文件Uris打开文件(使用“文件”方案)。从内容Uri获取File file的最简单方法是什么?欢迎任何例子。

public PlsReader(URI path) {

   File file = new File(path);
}

2 个答案:

答案 0 :(得分:0)

使用Context#getContentResolver().openInputStream(uri)从Uri获取InputStream。

或使用Context#getContentResolver().openFileDescriptor()获取ParcelFileDescriptor。然后使用ParcelFileDescriptor#getFileDescriptor()获取FileDescriptor。

答案 1 :(得分:-2)

试试这个 获得的第一种方法是

Uri.getPath();

这将给出任何文件的完整绝对路径

和第二种方法如下

  Strinf absolutepath =   getRealPathFromURI(this,URI);

和方法getRealPathFromURI在这里

  public String getRealPathFromURI(Context context, Uri contentUri) {
      Cursor cursor = null;
      try { 
        String[] proj = { MediaStore.Images.Media.DATA };
        cursor = context.getContentResolver().query(contentUri,  proj, null, null, null);
        int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
        cursor.moveToFirst();
        return cursor.getString(column_index);
      } finally {
        if (cursor != null) {
          cursor.close();
        }
      }
    }

然后将此绝对路径字符串传递给您的文件

public PlsReader(String absolutepath ) {

   File file = new File(absolutepath );
}
祝你好运。)