Forstå Tillatelser i Android M

Understanding Tillatelser i Android M
30
Del
20
Del
Dette Cyber ​​mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.

Innledning

Før M utgivelsen, har Android tillatelser modellen vært en alt-eller-ingenting beslutning for brukerne ved nye installasjoner. Dette betydde at hvis en bruker ønsket å bruke en app, først måtte de akseptere enhver tillatelse i søknaden eller velge å ikke installere det i det hele tatt. Dette førte til mange utviklere gjekk ut på app installerer, en tillit frakobling mellom brukere og utviklere, og andre bekymringer for personvernet.


Under den nye tillatelser modell, brukere vil kunne godkjenne tillatelser under kjøring som det er behov, og kan nekte disse tillatelsene til enhver tid. I denne artikkelen vil du lære hvordan denne endringen i kjøretillatelser vil påvirke deg som utvikler og hvordan brukerne vil oppleve programmene dine.

Det bør bemerkes at denne artikkelen ble skrevet før den offisielle utgivelsen av Android M , så litt informasjon kan endre seg med den offisielle utgivelsen.

1. Hva krever tillatelser?

Mens Android M krever likevel tillatelse til å bli erklært i AndroidManifest.xml, vil brukerne nå bli pålagt å godkjenne eller nekte bruken av at tillatelse under kjøring. En viktig endring i den nye versjonen av Android er at android.permission.INTERNET og android.permission.ACCESS_NETWORK_STATE har blitt nedgradert fra en vurdering av farlig til det normale. Det betyr at du ikke trenger å spørre brukeren før bruk.

Når du ber om tillatelse til godkjenning, vil brukeren bli bedt basert på tillatelse gruppe, snarere enn å bli bedt om å godkjenne hver enkelt tillatelse innenfor en gruppe. Dette betyr at hvis man har behov for å både sende og motta SMS-meldinger, brukernavn vil bare bli bedt SMS tillatelse gruppen til å godkjenne. Nedenfor er en liste over støttede tillatelse grupper i Android M Developer Preview 2 sett fra systeminnstillingene.

Det bør også nevnes at Android har en robust Intent system, som lar utviklere å be om data fra andre programmer . Snarere enn å måtte be om kameraet tillatelse og utvikle et program som bruker kameraet APIer fra bunnen av, kan du be om at brukeren ta et bilde ved hjelp av en allerede klarert kameraprogrammet for å få et bilde inn i appen. Tillatelsene som involverer kameraet vil bli håndtert av kamera-appen.

2. Hvordan be om tillatelse?

Når du trenger å bruke en funksjon som krever en tillatelse, er det en generell strøm av hendelser som vil skje. Du må først se om at tillatelse er allerede godkjent av brukeren.

Hvis brukeren ikke har godkjent tillatelse, kan du presentere dem med en dialog tillatelse forespørsel. Første gang du presentere denne til brukeren, må de enten nekte eller godkjenne tillatelse.

Men hvis de tidligere har nektet tillatelse og blir bedt om igjen, vil de ha muligheten til å velge bort noen gang blir spurt om at tillatelse igjen.

Du kan sjekke om en tillatelse er tidligere gitt ved å ringe checkSelfPermission før du bruker en funksjon som vil kreve at tillatelse. Denne metoden returnerer en int verdi basert på været at tillatelse er gitt eller ikke.

Hvis det er lik PackageManager.PERMISSION_GRANTED, så kan du fortsette som forventet. Men hvis det tillatelse ikke tidligere har vært gitt, kan du be om det med requestPermissions, passerer i en rekke tillatelse strenger og en tilpasset int forespørsel kode for å holde styr på app logikk flyt.
Int hasLocationPermission = checkSelfPermission (Manifest. permission.ACCESS_FINE_LOCATION); int hasSMSPermission = checkSelfPermission (Manifest.permission.SEND_SMS), List < String > tillatelser = new Arraylist < String > (); if (hasLocationPermission = PackageManager.PERMISSION_GRANTED!) {permissions.add (Manifest.permission.ACCESS_FINE_LOCATION);} (! hasSMSPermission = PackageManager.PERMISSION_GRANTED) hvis {permissions.add (Manifest.permission. SEND_SMS);} if (permissions.isEmpty (!)) {requestPermissions (permissions.toArray (new String [permissions.size ()]), REQUEST_CODE_SOME_FEATURES_PERMISSIONS);}

Når requestPermissions kalles, blir brukeren presentert med en forespørsel Dialogboksen for hver tillatelse gruppe som søknaden er å spørre om tillatelse for. Det er best praksis å bare be om tillatelser som trengs, snarere enn i bulk når brukeren først starter programmet.

Når brukeren er ferdig med dialoger, er onRequestPermissionsResult ringte og kan nås på din aktivitet. Det er der du enten starte funksjonen eller håndtere situasjonen der brukeren har avslått en eller flere tillatelser.

Et eksempel på hvordan å kontrollere om en tillatelse er innvilget eller avslått vises nedenfor. Hvis brukeren har benektet alle nødvendige tillatelser for funksjonen, bør du deaktivere denne funksjonen og la brukeren vite hvorfor det ikke fungerer i programmet.
Overridepublic Void onRequestPermissionsResult (int requestCode, String [] tillatelser, int [ ,,,0],] grantResults) {switch (requestCode) {case REQUEST_CODE_SOME_FEATURES_PERMISSIONS: {for (int i = 0; i < permissions.length; i ++) {if (grantResults [i] == PackageManager.PERMISSION_GRANTED) {Log.d ("Tillatelser" "tillatelse gitt:" + tillatelser [i]); } Else if (grantResults [i] == PackageManager.PERMISSION_DENIED) {Log.d ("Tillatelser", "Permission Denied:" + tillatelser [i]); } } } gå i stykker; Standard: {super.onRequestPermissionsResult (requestCode, tillatelser, grantResults); }}}
3. Legacy Apps på Android M

Mens apps som er bygget rettet mot Android M er pålagt å implementere den nye tillatelser dialoger og metoder, apps bygget for tidligere versjoner av Android vil fortsatt til stede brukere med en liste over tillatelser ved nye installasjoner. Selv om tillatelser blir akseptert før brukerne kan bruke app, kan de likevel tilbakekalles til enhver tid.

Siden infrastruktur for håndtering opphevet tillatelser vil ikke være tilgjengelig i programmer rettet mot mindre enn Android M, noen funksjoner som ville ha nødvendige tillatelsene vil returnere null, 0, eller en tom verdi når ikke gitt tillatelser. Dette kan føre til uventet oppførsel i apps, så det anbefales at utviklere forberede seg til å oppgradere sine apps for å støtte den nye Android M tillatelse modell så snart som mulig.

Konklusjon

I denne artikkelen, du har lært om den nye Android M tillatelse modellen og hvordan man kan støtte oppdaterte tillatelser i programmene dine. Vi har også dekket hvordan apps vil svare på den nye versjonen av Android når de har blitt bygget for tidligere versjoner. Ved hjelp av denne informasjonen, bør du være i stand til å få programmene klar for den offisielle utgivelsen av den neste oppdateringen til Android.



Previous:
Next Page: