【问题标题】:Android 10: cordova-plugin-mfilechose is not workingAndroid 10:cordova-plugin-mfilechose 不工作
【发布时间】:2019-11-19 11:00:12
【问题描述】:

我在 Ionic 4 应用程序中使用 cordova-plugin-mfilechose。在 Android 版本 9 之前它工作正常。但在 Android 10 中,每当我们触发插件时,它只会打开一个窗口,显示内部存储但没有列出文件,尽管手机内有很多文件。我使用了与下面添加的官方文档相同的代码。提前致谢。

window.plugins.mfilechooser.open(['.doc', '.xls', '.ppt'], function (uri) {

  alert(uri);

}, function (error) {

    alert(error);

});

【问题讨论】:

    标签: android cordova ionic4


    【解决方案1】:

    该插件看起来像是在使用标准的 Java 文件操作和路径来选择文件,在 Android 10 及更高版本中,除了应用程序的私有目录之外,您不能再对任何东西使用文件路径或 Java 文件操作。

    https://developer.android.com/training/data-storage/files/external-scoped

    也不知道为什么你会使用这样的插件,因为 Android 通过 Storage Access FrameWork(SAF) 或 MediaStore 原生提供了这些功能

    https://developer.android.com/guide/topics/providers/document-provider#client 关于如何。

    现在一切都只能使用 Java FileDescriptor

    【讨论】:

    • 感谢您的回复。但由于它是一个带有 Ionic 框架的混合应用程序,我需要使用一些插件来实现原生功能。我的要求是使用上面的插件实现的。您是否知道任何插件或对现有插件的修改以在 Android 10 中运行?
    • 我不使用 Ionic 框架,所以我不知道有一个插件可以工作,但是有一个临时修复,您可以按照 developer.android.com/training/data-storage/files/…android:requestLegacyExternalStorage="true" 添加到应用程序清单中.这适用于 Android 10,但不适用于 Android 11,这将使您有时间提出与插件兼容的功能请求。
    • 感谢您的回复。我会检查我可以做些什么来修改插件,以便它开始支持最新的存储规范。
    • 真的,插件需要成为一个接口包装器,本身功能很少,它只需要将其当前 API 适配到 SAF/Mediastore API。第三方文件选择器的角色在 Android 10 中是多余的
    【解决方案2】:

    我找到了解决问题的方法。尽管从长远来看,这不是解决方案。在我的 Ionic 4 项目 project/config.xml 中,android-targetSdkVersion 为 29。我将其更改为 28。它适用于 Android 10 以及所有较低版本。下面是代码。

    <preference name="android-targetSdkVersion" value="28" />
    

    【讨论】:

    • 不,我不这么认为。因为当我通过将值更改为 28 进行测试时,应用程序甚至无法加载。
    【解决方案3】:

    我认为所有 ionic 插件(如 cordova-plugin-camera 和 cordova-plugin-telerik-imagepicker)都需要更新以与 android 10 完全兼容以进行范围存储。

    【讨论】:

    • 没错,大多数插件都已经过时了,最后一次提交是几年前的事了。 Ionic 推广专业功能和电容器,但没有表现出与作者互动以保持科尔多瓦插件最新的兴趣。
    猜你喜欢
    • 2016-04-07
    • 2018-11-28
    • 1970-01-01
    • 2022-09-23
    • 2016-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多