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



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

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

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

我经历了很多选择,但我还不清楚如何找到一条绝对的道路。我的应用程序应该支持4.0以后的版本。

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

  1. 若用户选择了一个文件夹,我应该能够达到和1一样的效果。

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

您可以像这样尝试

@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);
    }

相关内容

  • 没有找到相关文章

最新更新