微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用默认应用程序 nativescript 7 打开文件

如何解决使用默认应用程序 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 举报,一经查实,本站将立刻删除。