Zahvaljujoč Scoped Storage je Android 11 v nekaterih napravah nekoliko neprijetno brisati slike v storitvi Google Photos, vendar morda obstaja popravek.
Ne moremo vedeti, koliko naprav na trgu uporablja Android 11 od Googla ne objavlja več statistike distribucije, vendar je zdaj verjetno na desetine milijonov, ki so jim podjetja, kot sta Xiaomi in Samsung, imela čas za posodobitev veliko njihovih modelov. Če vaša naprava poganja Android 11 in uporabljate Google Photos, obstaja možnost, da ste naleteli na precej nadležno spremembo v načinu, kako aplikacija obravnava brisanje in obnavljanje slik. Namesto da preprosto izberete slike in videoposnetke, ki jih želite izbrisati, pritisnite ikono smetnjaka in nato tapnite »premakni v smeti«, se boste morali zdaj dotakniti dodatnega poziva, da storitvi Google Photos dovolite, da izbriše ali obnovi datoteke.
Za tiste, ki posnamete veliko fotografij in videoposnetkov, je morda nadležno, da morate storitvi Google Photos dati dovoljenje za brisanje ali obnovitev datoteke. In kot je poudaril
AndroidPolice, tapkanje dodatnega gumba ni edina težava, s katero se boste morda morali soočiti. Če uporabljate Google Photos v drugi napravi in želite urediti ali odstraniti datoteko, ki ste jo naložili iz telefona z operacijskim sistemom Android 11, vas bo aplikacija morda pozvala, da pregledate »nesinhronizirane spremembe«. To lahko hitro postane moteče, če vas Google Photos nenehno sprašuje, da pregledate spremembe, ki ste jih pravkar naredili na drugi platformi.Dodatni korak za brisanje ali obnovitev datoteke ni bil potreben v sistemu Android 10, vendar je zdaj potreben v sistemu Android 11 zaradi uveljavljanja Scoped Storage. Pred Scoped Storage je dostop do celotnega imenika zunanjega pomnilnika upravljal en sam dovoljenje, zaradi česar težko omejite, katere aplikacije lahko dostopajo do vaših zasebnih dokumentov, slik ali videi. Z vzpostavljeno Scoped Storage Android omeji, koliko dostopa ima lahko aplikacija do občutljivih datotek brez izrecnega soglasja uporabnika. Več podrobnosti najdete na Scoped Storage v tem članku ali si oglejte spodnjo Googlovo grafiko za povzetek sprememb.
Medtem ko so bili zaposleni z omejevanjem dostopa do prostora za shranjevanje v sistemu Android 11, je Google izboljševal tudi obstoječe API-je, da bi izboljšal uporabniško izkušnjo. Na primer, aplikacije, ki ciljajo na Android 11, lahko uporabljajo API MediaStore za datoteko namesto da izbrišete. Če želite premakniti datoteko v koš, mora aplikacija to storiti pozove uporabnika, da mu odobri dostop za pisanje. Ker večina slik in videoposnetkov, ki jih dodate v Google Photos iz telefona, prihaja iz druge aplikacije — kot je standardna aplikacija za kamero — Photos mora zaprositi za dovoljenje, preden lahko premakne datoteko v ali iz smeti. Vendar Google Photos ne zahteva dovoljenja za smeti datotek, če uporabljate telefon Pixel z nameščenim sistemom Android 11. Vendar zahteva dovoljenje v bistvu vseh drugih napravah s sistemom Android 11, vključno z večino naprav Samsung, Xiaomi, OnePlus in ASUS. Kaj daje?
Razlog je v tem, da aplikacija sistemske galerije ni podvržena omejitvam Scoped Storage. To pomeni, da lahko aplikacija za galerijo odpira, ureja ali briše slike in videoposnetke brez izrecnega dovoljenja. Google Photos je vnaprej nastavljen kot sistemska aplikacija za galerijo na telefonih Pixel, vendar večina proizvajalcev originalne opreme namesto tega vnaprej nastavi lastno aplikacijo za galerijo. Poleg tega ni uporabniške nastavitve za spreminjanje aplikacije sistemske galerije, niti na zaslonu »privzetih aplikacij« Androida. Vendar tam je skriti način za spreminjanje aplikacije sistemske galerije, vendar obstaja eden velik opozorilo: samo sistemsko aplikacijo lahko nastavite kot aplikacijo sistemske galerije. To pomeni samo telefone, ki že imate Google Photos vnaprej nameščeno kot sistemsko aplikacijo lahko izkoristi ta trik.
Temu kriteriju ne ustreza veliko telefonov, vendar na podlagi našega testiranja, to lahko potrdimo deluje na večini telefonov OnePlus in nekaterih ASUS. Ta metoda ni delovala na nobenem od telefonov Samsung, na katerih smo jo testirali, prav tako ni delovala na Xiaomi Mi 10 Pro. Če imate korenski dostop ali uporabljate ROM po meri, bo ta metoda morda delovala v vaši napravi, potem ko boste sistemizirali aplikacijo Google Photos, vendar smo to metodo preizkusili samo na osnovnih napravah.
Kako (morda) narediti Google Photos sistemsko galerijsko aplikacijo
Zasluge gredo Kieronu Quinnu (Quinny899 na forumih XDA), ker ste delili ta trik!
Prva stvar, ki jo boste morali narediti, je namestitev ADB na vaš računalnik. Imamo posodobljen vodnik, kako to storiti tukaj. Ko nastavite ADB, vnesite naslednji ukaz:
adbshellcmdroleadd-role-holderandroid.app.role.SYSTEM_GALLERYcom.google.android.apps.photos
Če ne vidite napake, je verjetno delovalo! Hitro lahko preverite, ali deluje, tako da posnamete fotografijo in jo poskusite izbrisati v storitvi Google Photos. Lahko pa zaženete naslednji ukaz:
adb shell dumpsys role
...in preverite, ali je "imetnik" "android.app.role. SYSTEM_GALLERY« je »com.google.android.apps.photos« (ime paketa Google Photos).
Kaj naredi ta ukaz?
Android 10 je dodal a nov API, imenovan "Roles". Ko ima aplikacija določeno vlogo, se ji samodejno dodeli dostop do določenih dovoljenj. Na primer, vloga SYSTEM_GALLERY aplikaciji samodejno dodeli "poln dostop za branje in pisanje do vseh slikovnih in video datotek v zunanjem pomnilniku, vključno z dostopom do lokacije metapodatkov." Vlogo SYSTEM_GALLERY je mogoče dodeliti samo sistemskim aplikacijam, njenega privzetega imetnika pa definira Android konfiguracijska vrednost "config_systemGallery." Kot smo že pojasnili, večina proizvajalcev originalne opreme vnaprej nastavi to vrednost na ime paketa, ki ustreza njihovemu lastna aplikacija za galerijo. Te vrednosti ni mogoče spremeniti brez spreminjanja ogrodja ali namestitve prekrivanja, pri čemer oboje zahteva korenski dostop.
Vendar pa je je mogoče dodati drugo aplikacijo kot imetnika vloge SYSTEM_GALLERY, vendar samo če je ta aplikacija tudi sistemska. To je mogoče na številnih telefonih OnePlus in nekaterih ASUS, ker so ti proizvajalci originalne opreme navidezno vnaprej namestili Google Photos na sistemski ravni in ne na ravni uporabnika. Zaradi tega je aplikacija Google Photos upravičena do vloge SYSTEM_GALLERY, kar izkoriščamo Androidovega skritega lupinskega vmesnika RoleManager, da mu omogoči dostop do dovoljenj, ki jih običajno ne more imeti odobreno. Če poskusite dodeliti vlogo SYSTEM_GALLERY nesistemski aplikaciji, boste v logcatu videli to napako:
ERoleControllerServiceImpl: Packagedoesnotqualifyfortherole, package: com.google.android.apps.photos, role: android.app.role.SYSTEM_GALLERY
Na žalost nismo našli načina, kako bi se izognili tej omejitvi, če pa že, bomo svojo metodo delili s skupnostjo. Seveda bi raje želeli, da bi Google vlogo SYSTEM_GALLERY enostavno določil uporabnik, namesto da bi bil omejen na izbiro OEM.