Tja ... uhm ... zo werkt het op ELK computing platform.
Dat klopt helemaal, ik wilde daarmee alleen aangeven dat het probleem daar al mee begint

Klopt; als je de permission.INTERNET en permission.READ_[..]_STORAGE geeft, dan kan dat. Maar wat wil je? Een programma dat niet het internet op kan of niet kan schrijven naar de schijf? WinRAR moet kunnen schrijven naar de schijf!
Natuurlijk moet dat kunnen. Ik zou alleen graag willen dat je iets beter kon kiezen. File explorers en WinRAR moeten overal bij kunnen, maar Google Foto's en de camera app hoeven dat echt niet. Iets fijnere toegang tot wie waar bij mag zou heel fijn zijn. Nu zijn er bijvoorbeeld advertentieframeworks die installaties van apps aan elkaar koppelen door een ID te schrijven naar een bestandje op de SD-kaart en die in andere apps weer terug te lezen...
Niet helemaal. Vanaf API nogwat (4.nogwat, te lui om t op te zoeken) werd de acces manier heel vervelend (voor de developer) veranderd. Dat is niet teruggedraaid.
"Veranderd" was het ook niet 100%, Google heeft een officiële API gemaakt voor iets waar nog geen officiële API voor was, en de tussenpartijen deze API laten gebruiken. Voorheen waren er hier en daar wat hacks om de uitbreidbare opslag te gebruiken maar de implementaties wisselden per toestel en Android-versie.
Nu werd a) SD-kaart-toegang afgedwongen door rechten en b) konden de meeste apps alleen schrijven in hun eigen map in /sdcard/android/data/com.example.app/ en alles erbuiten alleen maar lezen. Dat laatste is teruggetrokken: tegenwoordig kan een app wel weer lezen en schrijven naar andere locaties op de SD-kaart als deze de juiste rechten heeft.
Ook niet helemaal waar. Defensive programming had enkel een error message kunnen weergeven van: 'Dit kan ik niet'. En om tegenwoordig dingen weg te schrijven heb je lappen code nodig (die veelal nog vervelender worden als je met een Samsung toestel te maken hebt).
Dat is waar, met defensive programming kun je maar zo veel doen. Maar apps die crashen omdat het advertentieplatform een video proberen te laten saven op de SD-kaart is toch weer van een andere orde als een foutmelding. Want dat gebeurde er: er kwam een exception, de app verwachtte geen exception en het hele ding force closede.
Inderdaad is de API er niet duidelijker op geworden. Alles moet asynchroon (downloaden, permissies vragen, op permissies reageren, etc.) en simpele code wordt zo heel snel heel complex. Het had veel makkelijker gekund, maar Google is vanwege een combinatie van eigen keuzes en backwards compatibility deze weg ingegaan. Zelf had ik de API ook graag wat simpeler gezien

.
Niet de schuld van Huawei, OnePlus of whatever. Probleem ligt bij nieuwe versies van Android waar de API's zich anders gedragen. Het is eigenlijk wel degelijk de schuld van Google en devs moeten code aanpassen om op de nieuwe API's te laten werken (en dus op de nieuwe telefoons, zoals de Pixel).
Het klopt helemaal dat dit niet de schuld is van de fabrikanten! Maar dat weet je oma/opa/vader/moeder niet! Een normale consument denkt "X werkt op toestel Y, maar op toestel Z crasht het. X heeft het altijd goed gedaan. Het moet dus aan toestel Z liggen!". Dit is geen vreemde gedachtegang als je de details van het OS niet kent.
Google probeert de privacy te verbeteren, een paar luie ontwikkelaars houden zich niet aan de richtlijnen en een applicatie crasht. Je overgrootopa weet echter niet hoe hij een systeemcrash moet interpreteren en wil de app minder graag blijven gebruiken op die spiksplinternieuwe telefoon of de nieuwe telefoon minder gebruiken omdat de app het niet doet.
Een belangrijke API wijziging, zoals applicaties beperken in de rechten die ze krijgen, krijg je er eenmaal niet doorheen zonder sommige oude apps kapot te maken. Om de privacy te verbeteren is een nieuwe ronde aan restricties hard nodig: je kunt sommige permissies nog steeds niet uitzetten in vanilla Android. Ik heb ook sterk het vermoeden dat de app manager (die in Android 4.x zat ,waar je nog veel meer rechten in kon trekken) het om die reden niet gehaald heeft. Het is te makkelijk fouten te maken als onervaren gebruiker.
Tja ... maar dit vereist een ge-root toestel. En root geven is ZEER gevaarlijk. ALS je het nodig hebt, dan moet je direct nadat je klaar bent weer de root uitzetten, want anders loop je meteen zeer onveilig systeem rond; zoals alle beveiligings experts zeggen: 'rooting your phone is like going on the internet without a condom'.
Het probleem is dit: je laat programma's code uitvoeren op je systeem. En dat is gevaarlijk.
Persoonlijk zie ik root op Android niet anders als sudo op Linux. Je moet weten wat de mogelijke impact is en je moet je toestel en je root manager goed up to date houden, anders volgen er zware consequenties. En als je je toestel niet up to date kan houden, is root uitschakelen wellicht de beste keuze. Maar zolang je software bij is en je nadenkt voor je op "ja" klikt kun je de meeste root functies gewoon blijven gebruiken. En het vinkje "remember this decision" uit laten natuurlijk!
De grap is dat Android wat dat betreft beter is dan Windows doordat je een klein beetje dingen aan kan passen/aan/uit kan zetten. Maar andermans code uitvoeren op een computer is gewoonweg risicovol en is heel lastig dicht te timmeren zonder a)de dev helemaal gek te maken met edge-cases en b)de gebruiker helemaal gek te maken met keuzes die het programma deels of helemaal nutteloos kunnen maken door dingen te weigeren.
Daar ben ik het helemaal mee eens. Android heeft tenminste een permissiemodel, Windows (UWP even buiten beschouwing gelaten) heeft dat niet (behalve "user" vs "admin"). Hoe beperkt het soms ook lijkt, het is toch nog een hele verbetering ten opzichte van goede oude Windows/Linux/macOS.
Tegenwoordig hebben we een manier gevonden om code uit te voeren in een sandbox waar rechten selectief aan en uit kunnen worden gezet: men noemt het een browser

. Dat is ook precies de reden dat ik op mijn telefoon de Facebook/Twitter/etc. website gebruik in plaats van de app; ik wil niet dat Facebook mijn IMEI uitleest!