• 在安卓Q(10)上操作文件读写时遇到的问题,进行记录。


    获取到file的对象之后,调用 createNewFile 方法尝试在指定目录下生成一个文件并往文件中写入内容,同样的方法之前在android9及以前版本都没问题,在网上查找了之后基本都指向了权限问题。

    后经查找网上蛮多介绍这个问题的,android Q对于文件读写引入了新特性,在这个版本中,READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE均受到了限制,无法再像之前的版本直接获取到文件。如果希望恢复之前的权限逻辑,可以在manifest文件中设置:

    android:requestLegacyExternalStorage="true"
    即可解决(但不确定这种方法是不是临时的方法,有可能后面谷歌会干掉这种方式也说不定)。

    另外,还可以通过StorageManager的getPrimaryStorageVolume().createOpenDocumentTreeIntent()方法来进行操作,这个方法没有办法通过File类来操作文件,但是可以使用类似的DocumentFile

    1 <application
    2         android:sharedUserId="android.uid.system"
    3         android:allowBackup="true"
    4         android:icon="@mipmap/ic_launcher"
    5         android:label="@string/app_name"
    6         android:roundIcon="@mipmap/ic_launcher_round"
    7         android:supportsRtl="true"
    8         android:requestLegacyExternalStorage="true"
    9         android:theme="@style/AppTheme">

    然后重新编译apk,安装打开apk,正常在指定目录下生成了对应文件

  • 相关阅读:
    sum left join 多次引发的问题
    WPF之Binding基础三 Binding的路径Path
    解决Android Studio启动不了的办法
    指向常量的指针和常量指针的区别简单理解
    简单的字符串操作
    QT问答
    log4qt使用示例
    在线代码库
    Qt5的windows开放环境准备
    QT 调试技术
  • 原文地址:https://www.cnblogs.com/aziji/p/12515514.html
Copyright © 2020-2023  润新知