开发者社区> 问答> 正文

Android是否具有与Java的Desktop.getDesktop()类似的类来打开文件

我们正在尝试做的是:我们正在尝试将现有的Java Desktop应用程序复制到Android应用程序(也基于Java)。桌面应用程序使用以下桌面类代码来打开传递给它的任何形式的文件类型(例如docx,xl​​sx,txt,pdf.jpg等)。此代码将打开文件到关联的应用程序,或者提示用户选择一个应用程序(如果没有关联或不存在)。

我们的问题:由于不是Android开发和系统类的新手,因此我们无法正确识别Android中是否存在此类,也没有正确的术语来找到它并可以使用您的帮助。

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

问题来源:Stack Overflow

展开
收起
montos 2020-03-27 22:44:23 655 0
1 条回答
写回答
取消 提交回答
  • 我确实根据CommonWare建议使用来解决我的问题Intent(请参见上文)。但是,我确实遇到了许多Uri路径问题,并且FileProvider在构建Intent中使用的Uri时需要包括使用a 来处理内部文件路径。

    我提供了用于构建传递给Intent的Uri路径的代码(包装在openFile(Uri uri)方法中。如果它有助于查看我如何使用Intent的完整上下文,您可以在此处查看:(为什么要使用Android打开图像时文件意图挂起?)。

    openFile()处理实际的Intent:

    <-全部语言:lang-java->

    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()创建Uri从一个的TableRow值 URI是通过FileProvider建有文件调用类开始。

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

    回答来源:Stack Overflow

    2020-03-27 22:45:05
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载