我们正在尝试做的是:我们正在尝试将现有的Java Desktop应用程序复制到Android应用程序(也基于Java)。桌面应用程序使用以下桌面类代码来打开传递给它的任何形式的文件类型(例如docx,xlsx,txt,pdf.jpg等)。此代码将打开文件到关联的应用程序,或者提示用户选择一个应用程序(如果没有关联或不存在)。
我们的问题:由于不是Android开发和系统类的新手,因此我们无法正确识别Android中是否存在此类,也没有正确的术语来找到它并可以使用您的帮助。
Desktop.getDesktop().open(file); // Java version
问题来源:Stack Overflow
我确实根据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
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。