具有内容Uri

时间:2019-03-28 18:59:24

标签: java android file android-intent

我正在创建一个应用程序,该应用程序应保存保存在设备上的参考文档。 我通过以下方式收到这些文档的内容URI:

private void selectDocument() {
    Intent chooseFile;
    chooseFile = new Intent(Intent.ACTION_GET_CONTENT);
    chooseFile.addCategory(Intent.CATEGORY_OPENABLE);
    chooseFile.setType("*/*");
    if (chooseFile.resolveActivity(getPackageManager()) != null)
        startActivityForResult(chooseFile, ACTIVITY_CHOOSE_FILE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    if (resultCode != RESULT_OK) return;
    if (requestCode == ACTIVITY_CHOOSE_FILE) {

        try {
            binding.txtLink.setText(URLDecoder.decode(data.getDataString(),"UTF-8"));
            binding.btnLink.setTag(false);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    } else {
        super.onActivityResult(requestCode, resultCode, data);
    }
}

在向用户显示url之后,他应该能够打开文档。

由于我只获得contentURI,所以我不确定如何做到这一点。 我目前正在尝试的是这样:

    private void openDocument() {
    String file = binding.txtLink.getText().toString();
    if (file.isEmpty()) {
        return;
    }
    Intent intent;

    String extension = file.substring(file.lastIndexOf(".") + 1);
    String mimeType = MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
    intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(Uri.parse(file));

    if (intent.resolveActivity(getPackageManager()) != null) {
        startActivity(intent);
    } else {
        Snackbar.make(binding.root, "Keine Anwendung zum öffnen der Datei installiert", Snackbar.LENGTH_LONG).show();
    }

}

这已经打开了正确的应用程序,但是他们找不到文件。

要启用此行为,我需要做什么? 还是我必须将文件复制到我的应用程序目录并从那里打开它们?

0 个答案:

没有答案