Android 是否有类似于 Java 的 Desktop.getDesktop() 的 class 打开文件或提示用户选择应用程序关联?

Does Android have a similar class to Java's Desktop.getDesktop() for opening files or prompting the user to choose an application association?

我们正在尝试做的事情:我们正在尝试将现有的 Java 桌面应用程序复制到 Android 应用程序(基于 Java)。桌面应用程序使用以下 Desktop class 代码打开传递给它的任何形式的文件类型(例如 docx、xlsx、txt、pdf.jpg 等)。如果 none 关联或存在,此代码将打开文件到关联的应用程序或提示用户 select 应用程序。

我们的问题: 作为 Android 开发和系统的新手 classes,我们无法正确识别是否存在这样的问题class 在 Android 或正确的术语中找到它并需要你的帮助。

Desktop.getDesktop().open(file); // Java version

我确实根据 CommonWare 的 使用 Intent 的建议(见上文)解决了我的问题。但是,我确实遇到了一些 Uri 路径问题,需要在构建 Intent 中使用的 Uri 时使用 FileProvider 来处理内部文件路径。

我提供了用于构建传递给 Intent 的 Uri 路径的代码(包装在 openFile(Uri uri) 方法中。如果它有助于查看我如何使用 Intent 的完整上下文,您可以在这里看到:().

处理实际 Intent 的 openFile():

private void openFile(Uri uri){
    Intent intent = new Intent(Intent.ACTION_VIEW);
    intent.setData(uri);
    intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivityForResult(intent, 2);
}

TableRow onClick() 从 TableRow 值 创建 Uri Uri 是通过 FileProvider 构建的,从 File class 调用开始。

row.setOnClickListener(v -> {

    TableRow tablerow = (TableRow) v;
    TextView sample = (TextView) tablerow.getChildAt(1);
    String result = sample.getText().toString();

    File filePaths = new File(getFilesDir().toString());
    File newFile = new File(filePaths, result);
    Uri contentUri = getUriForFile(getApplicationContext(), "com.mydomain.fileprovider", newFile);
    openFile(contentUri);

});