使用默认应用程序 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
);

保存此文件后,我希望能够在认查看器中打开它(这些文件通常是 pngpdf 文件)。我尝试使用如下所示的意图来实现这一点:

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

我已经尝试四处寻求帮助,但我所做的修复似乎都没有帮助。任何指向正确方向的指针将不胜感激!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)