Notiz: Ein seltsames Problem mit der Speicherberechtigung in Android 11+

Testgerät: Xiaomi Youth 10, Android 11 (EMUI 12.1.7)

Kürzlich habe ich plötzlich festgestellt, dass ich keine SD-Kartendateien schreiben kann. Die wichtigste Änderung in letzter Zeit ist die Änderung von targetSdkVersion von 26 auf 30 und die damit verbundenen Änderungen.

Nach der Überprüfung sollten theoretisch ab Android 11 Berechtigungen erforderlich sein, auch wenn die targetSdkVersion 26 ist:

<uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE">

, und ändern Sie dann den entsprechenden Berechtigungsanwendungscode, z. B. einen Sprung zur systembezogenen Berechtigungsschnittstelle usw. Aber ich konnte mich nicht daran gewöhnen, weil ich keine Probleme festgestellt habe (vielleicht hat Xiaomis Android 11 seine eigenen magischen Änderungen).

Dies ist jedoch nicht das Seltsame, das im Titel erwähnt wird. Das Seltsame ist: Ich habe einen von der App vor dem oben genannten Upgrade erstellten Ordner aus dem mobilen Dateimanager gelöscht. Es sind immer noch einige Ordner und Dateien darin. Als Ergebnis Diese Datei wurde von der App erstellt. Ordner und Dateien geben „false“ zurück ...

Wenn die App einen neuen Ordner mit einem anderen Pfad öffnet oder eine Datei erstellt oder schreibt, ist dies möglich, dieser alte Ordner kann jedoch nicht erstellt werden. Anschließend erstellen Sie diesen Ordner manuell erneut im mobilen Dateimanager. Die App kann Dateien in diesem Ordner erstellen und ändern.

Ich bin etwas verwirrt. Wenn ein Benutzer den von der App erstellten Ordner aus dem Dateimanager löscht, kann die App nicht erfolgreich neu erstellt werden. Ist das nicht eine große versteckte Gefahr?

Habe die Lösung zufällig gefunden:

重启手机即可!根据这个现象可以猜测:

系统的存储分区管理模块“记住”了app的各种存储操作和结果,包括创建文件夹;
当手工从第三方app(例如系统自带的文件管理器)删除该文件夹后,存储分区管理模块不知道,它认为app创建的该文件夹仍然存在,所以mkdir失败。
重启手机后,系统的存储分区管理模块也知道已经没有那个文件夹了,所以app又能创建刚才删除的文件夹了。

思考:
1、也许有比重启手机更简明的办法(清除app数据、重启app、重装app都是不行的);
2、也许第三方app删除本app所创建文件夹这个事件,其它安卓系统是知道的,只是我测试机的系统做的比较矬。

Es gibt auch ein seltsames Problem. Nach der Deinstallation der neuen Version der App und der Verwendung der alten Version der App mit targetSdkVersion 26 können die von der Drittanbieter-App (dem systemeigenen Dateimanager) manuell gelöschten Ordner nicht aus der App erstellt werden ! Diese Art von Test wurde schon oft auf alten Versionen getestet und es gibt kein Problem (vielleicht ist meine Erinnerung falsch, und die zuvor verwendete Testmaschine war Honor Youth 10, Android 10, Xiaomi Youth 10 wurde noch nie auf diese Weise getestet ?).

Lösung: Wie oben, starten Sie das Telefon neu und Sie können es erstellen.

Guess you like

Origin blog.csdn.net/piggy514/article/details/133869068