首页 > 解决方案 > Cordova ionic inappbrowser sdktargetversion 23 到 26 通过 Intent.getData() 暴露在应用程序之外

问题描述

我正在使用 IONIC Cordova,当我将 targetSdkVersion 23 传递到 26 时出现问题。

这是我的问题:

我用 :

import {InAppBrowser} from '@ionic-native/in-app-browser';
import {File} from '@ionic-native/file';

在我的构造函数中,我有:

fileService: File, private iab: InAppBrowser

在我下载文件并将其写入

this.fileService.externalDataDirectory

在我这样做之后:

this.iab.create(this.fileService.externalDataDirectory + fileName, '_system', 'location=yes');

inappbrowser 应用程序正在打开并向我显示文件。

但是当我传递到 targetSdkVersion 26 时,我得到了这个错误:

D/InAppBrowser: target = _system
D/InAppBrowser: in system
D/InAppBrowser: InAppBrowser: Error loading url file:///storage/emulated/0/Android/data/my.app/files/file.pdf:android.os.FileUriExposedException: 
file:///storage/emulated/0/Android/data/my.app/files/file.pdf exposed beyond app through Intent.getData()

有人可以帮我解决这个问题吗?我看到我需要更改清单文件以添加提供程序,但我不确定如何执行此操作以及我需要在项目中添加哪个插件来转换它。

标签: cordovaionic-frameworkinappbrowserandroid-fileprovider

解决方案


推荐阅读