我是新来的。最近我正在开发基于Python Kivy的android应用程序。我的应用程序是从 Instagram 下载帖子并将其保存在 Android 本地存储中。它在我的 Android(带有 Android 8.1 的 Oppo A3s)中工作正常,但是当我在我朋友的手机(比我的 Android 版本更新(Android 10))上测试它时,它失败了。当我运行 adb 时,它说权限被拒绝。我想知道并在互联网上找到解决方案,他们说 android 10 及更高版本不允许直接写入存储(例如:/sdcard/DCIM/Camera)
我的问题是:如何解决这个问题以及如何在 android 10 中将文件写入 /sdcard/DCIM/Camera ?或者如何将文件保存在公共存储中,以便其他应用程序也可以使用该文件?
非常感谢您的帮助:)
所以如果你的应用程序是由 kivy 或 kivymd 制作的 要启用对 Android 10 内部存储的访问,请获取编译后的 apk,使用 -
apktool
使用 -apktool d <APK name>
反编译它,然后打开它的 AndroidManifest.xml
文件并在 requestLegacyExternalStorage="true"
> 标签中添加 <application
,如下所示
<manifest ... >
<!-- This attribute is "false" by default on apps targeting
Android 10. -->
<application android:requestLegacyExternalStorage="true" ... >
...
</application>
</manifest>
然后使用
apktool b <name of folder with decompiled files>
重新编译,使用 apksigner 对 APK 进行签名,这样就可以了
请记住,对新编译的 apk 进行签名很重要,编译后的 APK 可以在包含反编译文件的文件夹中的 dist 子文件夹中找到
感谢您检查它是否有效