Dėl „Scoped Storage“ naudojant „Android 11“ tam tikruose įrenginiuose šiek tiek nepatogu ištrinti vaizdus „Google“ nuotraukose, tačiau gali būti, kad tai pataisoma.
Negalime žinoti, kiek rinkoje esančių įrenginių turi „Android 11“ nuo „Google“ laikų nebeskelbia platinimo statistikos, bet dabar tikriausiai yra dešimtys milijonų, kurių tokios įmonės kaip „Xiaomi“ ir „Samsung“ turėjo laiko atnaujinti daugelis jų modelių. Jei jūsų įrenginyje veikia „Android 11“ ir jūs naudojate „Google“ nuotraukas, yra tikimybė, kad susidūrėte su gana erzinančiu pokyčiu, kaip programa tvarko vaizdų trynimą ir atkūrimą. Užuot tiesiog pasirinkę norimus ištrinti vaizdus ir vaizdo įrašus, spustelėkite šiukšliadėžės piktogramą ir bakstelėkite „perkelti“. į šiukšliadėžę“, dabar turėsite bakstelėti papildomą raginimą, kad suteiktumėte „Google“ nuotraukoms leidimą ištrinti arba atkurti failus.
Tiems iš jūsų, kurie daro daug nuotraukų ir vaizdo įrašų, gali būti nemalonu suteikti „Google“ nuotraukoms leidimą ištrinti arba atkurti failą. Ir kaip nurodė
Papildomas veiksmas norint ištrinti arba atkurti failą nebuvo reikalingas naudojant „Android 10“, bet dabar būtinas naudojant „Android 11“, nes taikoma „Scoped Storage“. Prieš „Scoped Storage“ prieigą prie viso išorinės saugyklos katalogo valdė vienas leidimą, todėl jums sunku apriboti, kurios programos gali pasiekti jūsų privačius dokumentus, vaizdus ar vaizdo įrašus. Įdiegę „Scoped Storage“, „Android“ riboja, kiek programa gali pasiekti neskelbtinus failus be aiškaus vartotojo sutikimo. Daugiau informacijos galite rasti „Scoped Storage“. šiame straipsnyje arba peržiūrėkite toliau pateiktą „Google“ grafinį pakeitimų santrauką.
Nors jie buvo užsiėmę ribodami prieigą prie saugyklos „Android 11“, „Google“ taip pat tobulino esamas API, kad pagerintų naudotojų patirtį. Pavyzdžiui, programos, skirtos „Android 11“, gali naudoti „MediaStore“ API išmeskite failą į šiukšliadėžę, o ne jį ištrinkite. Tačiau norint perkelti failą į šiukšliadėžę, programa turi tai padaryti paraginti vartotoją suteikti jam rašymo prieigą. Kadangi dauguma vaizdų ir vaizdo įrašų, kuriuos pridedate prie „Google“ nuotraukų iš savo telefono, buvo gauti iš kitos programos – pvz., „Stock“ fotoaparato programa – „Photos“ turi paprašyti leidimo, kad galėtų perkelti failą į arba iš šiukšlių. Tačiau „Google“ nuotraukos neprašo leidimo išmesti failus, jei naudojate „Pixel“ telefoną, kuriame įdiegta „Android 11“. Tačiau jis prašo leidimo iš esmės kiekviename kitame įrenginyje, kuriame veikia „Android 11“, įskaitant daugumą „Samsung“, „Xiaomi“, „OnePlus“ ir „ASUS“ įrenginių. Ką duoda?
Priežastis ta, kad sistemos galerijos programai netaikomi saugojimo apribojimai. Tai reiškia, kad galerijos programa gali atidaryti, redaguoti arba ištrinti vaizdus ir vaizdo įrašus be aiškaus leidimo. „Google“ nuotraukos yra iš anksto nustatytos kaip sistemos galerijos programa „Pixel“ telefonuose, tačiau dauguma originalios įrangos gamintojų iš anksto nustato savo galerijos programą. Be to, nėra naudotojui skirto nustatymo keisti sistemos galerijos programą, net ir „Android“ „numatytųjų programų“ ekrane. Tačiau ten yra paslėptas būdas pakeisti sistemos galerijos programą, tačiau yra vienas didelis įspėjimas: tik sistemos programa gali būti nustatyta kaip sistemos galerijos programa. Tai reiškia, kad tik telefonai „Google“ nuotraukos jau yra iš anksto įdiegtos kaip sistemos programa gali pasinaudoti šia gudrybe.
Ne daug telefonų atitinka šį kriterijų, bet remiantis mūsų bandymais, galime tai patvirtinti veikia daugumoje „OnePlus“ ir kai kurių ASUS telefonų. Šis metodas neveikė nė viename iš Samsung telefonų, kuriuose jį išbandėme, taip pat neveikė ir „Xiaomi Mi 10 Pro“. Jei turite šakninę prieigą arba naudojate tinkintą ROM, šis metodas gali veikti jūsų įrenginyje, kai susisteminsite „Google“ nuotraukų programą, tačiau išbandėme šį metodą tik atsarginiuose įrenginiuose.
Kaip (galbūt) padaryti „Google“ nuotraukas sistemos galerijos programa
Kreditai atitenka Kieron Quinn (Quinny899 XDA forumuose), kad pasidalintumėte šiuo triuku!
Pirmas dalykas, kurį turėsite padaryti, yra įdiegti ADB savo kompiuteryje. Turime atnaujintą vadovą, kaip tai padaryti čia. Kai nustatysite ADB, įveskite šią komandą:
adbshellcmdroleadd-role-holderandroid.app.role.SYSTEM_GALLERYcom.google.android.apps.photos
Jei nematote klaidos, greičiausiai tai veikė! Galite greitai patikrinti, ar tai veikia, nufotografuodami ir bandydami ištrinti ją „Google“ nuotraukose. Arba galite paleisti šią komandą:
adb shell dumpsys role
...ir patikrinkite, ar „android.app.role“ „turėtojas“. SYSTEM_GALLERY“ yra „com.google.android.apps.photos“ („Google“ nuotraukų paketo pavadinimas).
Ką daro ši komanda?
„Android 10“ pridėjo a nauja API pavadinimu „Vaidmenys". Kai programa atlieka tam tikrą vaidmenį, jai automatiškai suteikiama prieiga prie tam tikrų leidimų. Pavyzdžiui, SYSTEM_GALLERY vaidmuo automatiškai suteikia programai „visą skaitymo ir rašymo prieigą prie visų išorinėje saugykloje esančių vaizdo ir vaizdo failų, įskaitant prieigą prie vietos metaduomenys." SYSTEM_GALLERY vaidmuo gali būti suteiktas tik sistemos programoms, o jo numatytąjį turėtoją nustato "Android" konfigūracijos vertė „config_systemGallery“. Kaip paaiškinome anksčiau, dauguma originalios įrangos gamintojų iš anksto nustato šią vertę į paketo pavadinimą, atitinkantį jų pavadinimą savo galerijos programą. Šios vertės negalima pakeisti nepakeitus sistemos arba neįdiegus perdangos, kurioms abiem reikia root prieigos.
Tačiau tai yra galima pridėti kitą programą kaip SYSTEM_GALLERY vaidmens turėtoją, bet tik jei ta programa taip pat yra sistemos programa. Tai įmanoma daugelyje „OnePlus“ ir kai kurių ASUS telefonų, nes atrodo, kad šie originalios įrangos gamintojai „Google“ nuotraukas įdiegė sistemos, o ne vartotojo lygiu. Dėl šios priežasties „Google“ nuotraukų programa tinkama atlikti SYSTEM_GALLERY vaidmenį, o mes pasinaudojame „Android“ paslėptą „RoleManager“ apvalkalo sąsają, kad suteiktų jai prieigą prie leidimų, kurių paprastai negali būti suteikta. Jei bandysite suteikti SYSTEM_GALLERY vaidmenį ne sistemos programai, logcat pamatysite šią klaidą:
ERoleControllerServiceImpl: Packagedoesnotqualifyfortherole, package: com.google.android.apps.photos, role: android.app.role.SYSTEM_GALLERY
Deja, neradome būdo apeiti šį apribojimą, bet jei tai padarysime, pasidalinsime savo metodu su bendruomene. Žinoma, norėtume, kad „Google“ paprasčiausiai nustatytų SYSTEM_GALLERY vaidmenį, o ne apsiribotų OĮG pasirinkimu.