How to use native android file-open-dialog?

2019-02-01 10:19发布

I've seen this dialog to pick/open a file on android in some apps and it seems to me as the native one. But I can't find a way to use it in my own apps. The language of the attached screenshot is German, but I'm sure someone will recognize it. Screenshot of the file-dialog

2条回答
欢心
2楼-- · 2019-02-01 10:26

You can use the intent ACTION_GET_CONTENT with the MIME type " * / * ". It will return the URI on the 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
        }
    }

Screenshot

查看更多
家丑人穷心不美
3楼-- · 2019-02-01 10:35

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.

查看更多
登录 后发表回答