How to use native android file-open-dialog?

不问归期 提交于 2019-11-29 22:28:28
Jordan Junior

You can use the intent ACTION_GET_CONTENT with the MIME type */*.

It will return the URI in onActivityResult()

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Intent intent = new Intent()
        .setType("*/*")
        .setAction(Intent.ACTION_GET_CONTENT);

        startActivityForResult(Intent.createChooser(intent, "Select a file"), 123);
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 123 && resultCode == RESULT_OK) {
            Uri selectedfile = data.getData(); //The uri with the location of the file
        }
    }

That appears to be the system UI for the Storage Access Framework. You would use ACTION_OPEN_DOCUMENT to allow the user to open an existing document, or ACTION_CREATE_DOCUMENT to allow the user to create a new document.

However, this is not a file UI. It is a content UI. The user can browse things that are not locally stored — in the screenshot, the user can browse their Google Drive and One Drive areas. And, what you get is a Uri pointing to content, not a file path.

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!