android - 将 sdk 版本从 28 升级到 29 时遇到错误
问题描述
将文件从内部存储或 SD 卡复制到应用程序数据目录时遇到权限被拒绝问题。从内部存储或 SD 卡上传时会发生同样的问题。
我尝试在 android target sdk 28 中构建相同的源代码,一切正常,但该功能在 android target sdk 29 中不起作用。我还尝试在设备中安装 target sdk 28 并使用 target sdk 29 重新安装而不卸载target sdk 28. 我的应用程序在这种情况下运行良好。
有没有人可以指导我,我该如何修改我的配置以防止权限被拒绝问题?
<content src="index.html" />
<access origin="*" />
<allow-intent href="http://*/*" />
<allow-intent href="https://*/*" />
<allow-intent href="tel:*" />
<allow-intent href="sms:*" />
<allow-intent href="mailto:*" />
<allow-intent href="geo:*" />
<preference name="ScrollEnabled" value="false" />
<preference name="BackupWebStorage" value="none" />
<preference name="SplashMaintainAspectRatio" value="true" />
<preference name="FadeSplashScreenDuration" value="300" />
<preference name="SplashShowOnlyFirstTime" value="false" />
<preference name="SplashScreen" value="screen" />
<preference name="SplashScreenDelay" value="3000" />
<preference name="android-minSdkVersion" value="22" />
<preference name="android-targetSdkVersion" value="29" />
<preference name="AndroidPersistentFileLocation" value="Compatibility" />
<platform name="android">
<edit-config file="app/src/main/AndroidManifest.xml" mode="merge" target="/manifest/application" xmlns:android="http://schemas.android.com/apk/res/android">
<application android:networkSecurityConfig="@xml/network_security_config" />
</edit-config>
<resource-file src="resources/android/xml/network_security_config.xml" target="app/src/main/res/xml/network_security_config.xml" />
<allow-intent href="market:*" />
<icon density="ldpi" src="resources/android/icon/drawable-ldpi-icon.png" />
<icon density="mdpi" src="resources/android/icon/drawable-mdpi-icon.png" />
<icon density="hdpi" src="resources/android/icon/drawable-hdpi-icon.png" />
<icon density="xhdpi" src="resources/android/icon/drawable-xhdpi-icon.png" />
<icon density="xxhdpi" src="resources/android/icon/drawable-xxhdpi-icon.png" />
<icon density="xxxhdpi" src="resources/android/icon/drawable-xxxhdpi-icon.png" />
<splash density="land-ldpi" src="resources/android/splash/drawable-land-ldpi-screen.png" />
<splash density="land-mdpi" src="resources/android/splash/drawable-land-mdpi-screen.png" />
<splash density="land-hdpi" src="resources/android/splash/drawable-land-hdpi-screen.png" />
<splash density="land-xhdpi" src="resources/android/splash/drawable-land-xhdpi-screen.png" />
<splash density="land-xxhdpi" src="resources/android/splash/drawable-land-xxhdpi-screen.png" />
<splash density="land-xxxhdpi" src="resources/android/splash/drawable-land-xxxhdpi-screen.png" />
<splash density="port-ldpi" src="resources/android/splash/drawable-port-ldpi-screen.png" />
<splash density="port-mdpi" src="resources/android/splash/drawable-port-mdpi-screen.png" />
<splash density="port-hdpi" src="resources/android/splash/drawable-port-hdpi-screen.png" />
<splash density="port-xhdpi" src="resources/android/splash/drawable-port-xhdpi-screen.png" />
<splash density="port-xxhdpi" src="resources/android/splash/drawable-port-xxhdpi-screen.png" />
<splash density="port-xxxhdpi" src="resources/android/splash/drawable-port-xxxhdpi-screen.png" />
</platform>
解决方案
- 为 android X 安装 cordova 插件
https://www.npmjs.com/package/cordova-plugin-androidx离子cordova插件添加cordova-plugin-androidx npm i cordova-plugin-androidx
https://www.npmjs.com/package/cordova-plugin-androidx-adapter离子cordova插件添加cordova-plugin-androidx-adapter npm i cordova-plugin-androidx-adapter
- 为 sdk 编辑 config.xml
<preference name="android-buildToolsVersion" value="29.0.0" /> <preference name="android-minSdkVersion" value="22" /> <preference name="android-compileSdkVersion" value="29" /> <preference name="android-targetSdkVersion" value="29" /> <preference name="android-supportLibVersion" value="28.0.0" /> <preference name="android-googlePlayServicesAuthVersion" value="16.0.1" />
移除现有的android平台,添加添加android平台9.0.0 +
在 AndroidManifest.xml 中编辑应用标签,在下面添加属性
android:requestLegacyExternalStorage="true"
推荐阅读
- proc - 如何在水晶中声明一个带有一个或两个参数的块参数
- html - Vertically-aligned inline-block element not perfectly centered within container
- dynamic - OL6,动态颜色/不透明度/透明度取决于特征中的数量(百分比)
- ansible - Is a correct YAML file enough for a correct ansible playbook, syntax while executing a role?
- php - PHP - 在循环中使用'file_put_contents'
- c++ - I/O 中的内存中字符串
- reactjs - 使用开发服务器时,Webpack 不向 index.html 发送文件
- createjs - EaselJS - 在数据库中存储形状图形
- angular - 如何通过 Firebase 从 Angular Firestore 中删除数据
- javascript - Dropzone Chunking chunksUploaded 未被调用