![](/img/trans.png)
[英]IONIC 3 Can't not open PDF file in Android with @ionic-native/file-opener
[英]Issue when reading text file from Android Download folder with @ionic-native/file/ngx - Android 11
我有一個 Ionic 5 應用程序,我正在使用 @ionic-native/file/ngx 和 cordova-plugin-file 插件將文本文件讀入我在 Android 上的應用程序。
我的代碼如下所示:
const path = this.file.externalRootDirectory + 'Download';
this.file.readAsText(path, 'foo.txt').then((file) => {
console.log('process file');
}).catch((e) => {
console.log('error '+ e);
});
這適用於運行 Android 9 的幾部手機。運行 Android 10 的 Pixel 3 不起作用。 它也不適用於運行 Android 11 的 Pixel。promise 返回 null。
我嘗試過的事情:
使用 checkDir() 驗證目錄是否存在 使用 FileChooser 和 filePath.resolveNativePath 使用 androidPermissions READ_EXTERNAL_STORAGE 設置為 true
這是我的離子信息
離子:
Ionic CLI : 6.12.2 (/Users/.nvm/versions/node/v12.18.3/lib/node_modules/@ionic/cli)
Ionic Framework : @ionic/angular 5.4.3
@angular-devkit/build-angular : 0.1002.0
@angular-devkit/schematics : 10.1.7
@angular/cli : 10.2.0
@ionic/angular-toolkit : 2.3.3
Cordova:
Cordova CLI : 10.0.0
Cordova Platforms : android 9.0.0, ios 6.1.1
Cordova Plugins : cordova-plugin-ionic-keyboard 2.2.0, cordova-plugin-ionic-webview 5.0.0, (and 15 other plugins)
Utility:
cordova-res (update available: 0.15.2) : 0.15.1
native-run (update available: 1.2.2) : 1.0.0
System:
ios-sim : 8.0.2
NodeJS : v12.18.3 (/Users/.nvm/versions/node/v12.18.3/bin/node)
npm : 6.14.8
OS : macOS Catalina
Xcode : Xcode 12.2 Build version 12B45b
任何關於我能做些什么來解決這個問題的想法都將不勝感激。
Android 在 Android 10(API 級別 29)中實施了一項新的存儲策略,該策略在 Android 11(API 級別 30)中實施,稱為Scoped Storage 。 默認情況下,它會阻止應用訪問通用文件系統,在您的情況下是下載文件夾。
我建議重新構建系統的長期解決方案,以便不需要來自下載文件夾的信息,因為那里可能存在大多數應用程序不應有業務訪問的敏感信息。 但是,如果您確實需要訪問權限,則必須使用一個新權限: MANAGE_EXTERNAL_STORAGE 。
對於 Android 10,最近向 cordova-plugin-file 添加了一個標志,以確保操作系統使用舊的文件策略,因此如果您使用的是最新的插件版本,您的代碼應該可以正常工作。 如果您需要直接從 repo 安裝它:
cordova plugin rm cordova-plugin-file --force
cordova plugin add https://github.com/apache/cordova-plugin-file
訂閱相關問題了解更多。
在我的例子中,我必須將<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />
添加到我的 AndroidManifest.xml,然后我進入設置>隱私>權限管理器>文件和媒體並在那里搜索我的應用程序,然后當您單擊它時,您將看到“允許管理所有文件”選項。
你必須手動完成,我還沒有找到一種方法來自動化這個過程,但我希望你可以使用它作為解決方案。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.