Takket være Scoped Storage gjør Android 11 på enkelte enheter det litt upraktisk å slette bilder i Google Foto, men det kan være en løsning.
Vi har ingen mulighet til å vite hvor mange enheter på markedet som kjører Android 11 siden Google publiserer ikke lenger distribusjonsstatistikk, men det er sannsynligvis titalls millioner nå som selskaper som Xiaomi og Samsung har hatt tid til å presse oppdateringen til mange av modellene deres. Hvis enheten din kjører Android 11 og du bruker Google Foto, er det en sjanse for at du har støtt på en ganske irriterende endring med måten appen håndterer bildesletting og gjenoppretting på. I stedet for bare å velge bildene og videoene du vil slette, trykke på søppelbøtteikonet og deretter trykke på "flytt til papirkurven"-knappen, må du nå trykke gjennom en ekstra melding for å gi Google Foto tillatelse til å slette eller gjenopprette filer.
For de av dere som tar mange bilder og videoer, kan det være irriterende å måtte gi Google Foto tillatelse til å slette eller gjenopprette en fil. Og som påpekt av
Android-politiet, å trykke på en ekstra knapp er ikke det eneste problemet du kanskje må håndtere. Hvis du bruker Google Foto på en annen enhet og ønsker å redigere eller kaste en fil du lastet opp fra telefonen din som kjører Android 11, kan appen be deg om å gå gjennom «usynkroniserte endringer». Det kan fort bli irriterende hvis Google Photos stadig ber deg om å gå gjennom endringer du nettopp har gjort på en annen plattform.Det ekstra trinnet for å slette eller gjenopprette en fil var ikke nødvendig i Android 10, men er nå nødvendig i Android 11 på grunn av håndhevelsen av Scoped Storage. Før Scoped Storage ble tilgang til hele den eksterne lagringskatalogen administrert av en enkelt tillatelse, noe som gjør det vanskelig for deg å begrense hvilke apper som kan få tilgang til dine private dokumenter, bilder eller videoer. Med Scoped Storage på plass begrenser Android hvor mye tilgang en app kan ha til sensitive filer uten eksplisitt brukersamtykke. Du kan finne flere detaljer om Scoped Storage i denne artikkelen eller se på Googles grafikk nedenfor for et sammendrag av endringene.
Mens de var opptatt med å begrense lagringstilgangen i Android 11, forbedret Google også eksisterende API-er for å forbedre brukeropplevelsen. For eksempel kan apper rettet mot Android 11 bruke MediaStore API til kaste en fil i stedet for å slette den. For å flytte en fil til papirkurven, må appen imidlertid gjøre det be brukeren om å gi den skrivetilgang. Siden de fleste bildene og videoene du legger til i Google Foto fra telefonen kom fra en annen app — for eksempel stock kamera-appen — Bilder må be om tillatelse før de kan flytte en fil til eller fra søppel. Google Photos ber imidlertid ikke om tillatelse til å kaste filer hvis du bruker en Pixel-telefon med Android 11 installert. Den ber imidlertid om tillatelse på stort sett alle andre enheter som kjører Android 11, inkludert de fleste Samsung-, Xiaomi-, OnePlus- og ASUS-enheter. Hva gir?
Årsaken er at systemgalleriappen ikke er underlagt begrensninger for Scoped Storage. Det betyr at lagergalleriappen kan åpne, redigere eller slette bilder og videoer uten eksplisitt tillatelse. Google Photos er forhåndsinnstilt som systemgalleriappen på Pixel-telefoner, men de fleste OEM-er forhåndsinnstiller sin egen galleriapp i stedet. Videre er det ingen brukervendt innstilling for å endre systemgalleriappen, ikke engang på Androids "standardapper"-skjerm. Imidlertid der er en skjult måte å endre systemgalleriappen på, men det er en stor advarsel: Bare en systemapplikasjon kan angis som systemgalleriappen. Det betyr bare telefoner som allerede har Google Foto forhåndsinstallert som en systemapp kan dra nytte av dette trikset.
Ikke mange telefoner oppfyller dette kriteriet, men basert på vår testing, vi kan bekrefte dette fungerer på de fleste OnePlus og noen ASUS-telefoner. Denne metoden fungerte ikke på noen av Samsung-telefonene vi testet den på, og den fungerte heller ikke på en Xiaomi Mi 10 Pro. Hvis du har root-tilgang eller kjører en egendefinert ROM, kan denne metoden fungere på enheten din etter at du har systemisert Google Foto-appen, men vi testet denne metoden bare på lagerenheter.
Hvordan (kanskje) gjøre Google Foto til systemgalleriappen
Kreditt går til Kieron Quinn (Quinny899 på XDA-forumene) for å dele dette trikset!
Det første du må gjøre er å installere ADB på din PC. Vi har en oppdatert veiledning for hvordan du gjør det her. Når du har ADB-oppsett, skriv inn følgende kommando:
adbshellcmdroleadd-role-holderandroid.app.role.SYSTEM_GALLERYcom.google.android.apps.photos
Hvis du ikke ser en feil, har det sannsynligvis fungert! Du kan raskt bekrefte at det fungerte ved å ta et bilde og deretter prøve å slette det i Google Foto. Alternativt kan du kjøre følgende kommando:
adb shell dumpsys role
...og sjekk om "holderen" til "android.app.role. SYSTEM_GALLERY" er "com.google.android.apps.photos" (pakkenavnet til Google Foto).
Hva gjør denne kommandoen?
Android 10 la til en nytt API kalt "Roler". Når en app har en bestemt rolle, gis den automatisk tilgang til visse tillatelser. For eksempel SYSTEM_GALLERY rolle gir automatisk en app "full lese- og skrivetilgang til alle bilde- og videofiler på ekstern lagring, inkludert tilgang til plassering metadata." SYSTEM_GALLERY-rollen kan bare gis til systemapplikasjoner, og standardholderen er definert av Android konfigurasjonsverdi "config_systemGallery." Som vi forklarte tidligere, forhåndsinnstiller de fleste OEM-er denne verdien til pakkenavnet som tilsvarer deres egen galleri-app. Denne verdien kan ikke endres uten enten å endre rammeverket eller installere et overlegg, som begge krever root-tilgang.
Imidlertid er det er mulig å legge til en annen app som innehaver av SYSTEM_GALLERY-rollen, men bare hvis den appen også er en systemapp. Dette er mulig på mange OnePlus og noen ASUS-telefoner fordi disse OEM-ene tilsynelatende forhåndsinstallerte Google Photos på systemnivå i stedet for brukernivå. På grunn av dette er Google Foto-appen kvalifisert til å inneha rollen SYSTEM_GALLERY, og vi drar nytte av dette av Androids skjulte RoleManager-skallgrensesnitt for å gi den tilgang til tillatelser det normalt ikke kan være gitt. Hvis du prøver å gi SYSTEM_GALLERY-rollen til en ikke-systemapp, vil du se følgende feil i logcat:
ERoleControllerServiceImpl: Packagedoesnotqualifyfortherole, package: com.google.android.apps.photos, role: android.app.role.SYSTEM_GALLERY
Dessverre har vi ikke funnet en vei rundt denne begrensningen, men hvis vi gjør det, deler vi metoden vår med fellesskapet. Selvfølgelig foretrekker vi at Google bare gjør SYSTEM_GALLERY-rollen brukerdefinerbar i stedet for begrenset til OEMs valg.