android - 使用默认应用程序 nativescript 7 打开文件
问题描述
我有一个应用程序,其中可以下载某些文档。这些文档以 base64 编码字符串的形式出现,我使用以下代码将其保存到设备中:
const binaryString = decode(base64Content);
const filePath = path.join(knownFolders.documents().path, filename);
const file = File.fromPath(filePath);
file.writeTextSync(
binaryString,
(err) => {
console.log(err);
},
encoding.ISO_8859_1
);
保存此文件后,我希望能够在默认查看器中打开它(这些文件通常是png
或pdf
文件)。我尝试使用如下所示的意图来实现这一点:
if (isAndroid) {
const context = Utils.ad.getApplicationContext();
try {
// Get mimeType
const fsa = new FileSystemAccess();
const mimeTypeMap = android.webkit.MimeTypeMap.getSingleton();
const mimeType = mimeTypeMap.getMimeTypeFromExtension(
fsa.getFileExtension(filepath).replace(".", "").toLowerCase()
);
// Create intent
const intent = new android.content.Intent(android.content.Intent.ACTION_VIEW);
intent.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
// Get file Url
const url = androidx.core.content.FileProvider.getUriForFile(
context,
context.getApplicationContext().getPackageName() + ".provider",
new java.io.File(filepath)
);
// Set intent data
intent.setDataAndType(url, mimeType);
// Create chooser
const chooser = android.content.Intent.createChooser(intent, "Open File...");
chooser.addFlags(android.content.Intent.FLAG_GRANT_READ_URI_PERMISSION);
chooser.setFlags(android.content.Intent.FLAG_ACTIVITY_NEW_TASK);
// Start activity
context.startActivity(chooser);
} catch (e) {
console.log(e);
}
}
这会在尝试打开文件时导致以下错误:
Error: java.lang.IllegalArgumentException: Failed to find configured root that contains /data/data/com.techairos.wtaapp/files/2581875 PL.pdf
我试过四处寻找帮助,但我所做的修复似乎都没有帮助。任何指向正确方向的指针将不胜感激!
解决方案
推荐阅读
- php - Ajax在laravel中返回未定义
- javascript - 如何在VSCode中找到当前activeTextEditor的文件夹名称?
- typescript-typings - 类型脚本 tsonfig.json 文件位置
- reactjs - 带有日期 xAxes 的散点图 react-chratjs-2
- python - Python Bot Telepot 错误 'raise KeyError('NoSuggested keys %s in %s' % (str(keys), str(d)))'
- node.js - 单独获取 AWS S3 文件并加入它们?
- c# - AutoMapper 版本之间的区别?
- c# - C# 中的泛型太多
- reactjs - 如何使用 React 查询 v3 使缓存无效?
- block - 如何保护视频免受 WordPress 网站 IDM 等第三方下载器的攻击