android获取所选文件的完整路径

时间:2015-06-26 19:31:38

标签: image file path

您好我正在编写一个应用程序,当用户长按或选择文件(任何类型的文件有或没有扩展名)时它应该出现在共享列表中,我的应用程序应该采取详细信息(我认为URI)并且应该能够将其转换为绝对路径。

作为示例,如果用户通过长按或选择启用共享选项来选择图像文件,我就能够显示我的应用程序。

当我在我的应用程序中打印URI作为吐司时,它显示的路径类似于" content://media...../24"这不是一条绝对的道路。

我已经经历了很多选择,但我还没有清楚地知道如何获得绝对路径。我的应用程序应该支持4.0以上。

需要关注 1.能够收集我的应用程序中的输入,它应该将其转换为绝对路径(如文件浏览器中所示)

  1. 如果用户选择了一个文件夹,我应该可以达到1。

  2. 一旦我实现了这一点,我应该再次显示为列表条目。在选择条目时,它应该允许显示可用应用程序列表以打开路径。

1 个答案:

答案 0 :(得分:1)

你可以这样试试

@Override
        protected void onActivityResult(int requestCode, int resultCode, Intent data) {
            super.onActivityResult(requestCode, resultCode, data);
        int RESULT_LOAD_IMAGE = 1;
        if (requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK
                && null != data) {
            Uri selectedFile = data.getData();

        String wholeID =DocumentsContract.getDocumentId(selectedFile);

        // Split at colon, use second item in the array
        String id = wholeID.split(":")[1];

        String[] column = { MediaStore.Images.Media.DATA };

        // where id is equal to
        String sel = MediaStore.Images.Media._ID + "=?";

        Cursor cursor = getContentResolver().
                query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,column, sel, new String[]{ id }, null);

        String filePath = "";

        int columnIndex = cursor != null ? cursor.getColumnIndex(column[0]) : 0;

        if (cursor != null && cursor.moveToFirst()) {
            filePath = cursor.getString(columnIndex);
        }
        if (cursor != null) {
            cursor.close();
        }
        File file = new File(filePath);
    }