Hjem Sosiale medier Vanligvis brukt kode i Android Application Development - dummies

Vanligvis brukt kode i Android Application Development - dummies

Innholdsfortegnelse:

Video: Android 101 by Fred Widjaja 2024

Video: Android 101 by Fred Widjaja 2024
Anonim

" Min app trenger en kringkasting mottaker. Kan noen påminn meg hvordan jeg kan kode en kringkastingsmottaker? Og når du er på det, hvordan returnerer en aktivitet et resultat? Åh, heck. Hvor kan jeg raskt finne alle de tingene? "

Å ha eksempler på hva slags kode som brukes i Android-applikasjonsutvikling, er klar til å være, kan være en stor hjelp. Du finner mange eksempler her.

Aktiviteter

Her er en aktivitet som starter en annen aktivitet:

offentlig klasse CheatSheetActivity utvider Aktivitetsredskaper OnClickListener {Button button1; statisk sluttstreng MY_ACTION = "com. allmycode. action"; statisk sluttstreng MY_URI = "my_scheme: my_scheme_specific_part"; @Override public void onCreate (Bundle savedInstanceState) {super. onCreate (savedInstanceState); setContentView (R. layout. main); button1 = (Button) findViewById (ID-ID1); Button1. setOnClickListener (dette);} offentlig ugyldig påClick (Vis arg0) {Intent intention = new Intent (); hensikt. setAction (MY_ACTION); hensikt. setData (Uri. parse (MY_URI)); startActivity (intent);}}

Og ikke glem - Når du oppretter en ny aktivitetsklasse, må du legge til et tilsvarende element i AndroidManifest. xml-fil. AndreActivity-elementets hensiktfilter ser noe ut som dette:


For å få et resultat fra en aktivitet, legg til følgende kode (eller noe som ligner på det) til appen din:

siste int CODE_NUMBER = 42; siste streng CLASSNAME = "CheatSheetActivity"; Offentlig tomgang onClick (Vis arg0) {Intent Intent = New Intent (); hensikt. setAction (MY_ACTION); hensikt. setData (Uri. parse (MY_URI)); startActivityForResult (intent, CODE_NUMBER);} beskyttet tomt onActivityResult (int codeNumber, int resultCode, Intent Intent) {hvis (resultCode == RESULT_OK) {if (codeNumber == CODE_NUMBER) {Logg. I (CLASSNAME, intent. getData (). getSchemeSpecificPart ());}}}

Og i aktiviteten som lager resultatet, legg til kode av følgende type:

Intent Intent = Ny Intent (); hensikt. setData (Uri. parse ("resultat: hei")); setResult (RESULT_OK, hensikt); bli ferdig();

Tjenester

En tjeneste gjør vanligvis arbeidet uten å plage (eller til og med varsle) brukeren. For eksempel kan en aksjekurs tjeneste nå ut til nettet og få de siste prisene på brukerens favorittvalg. En annen apps aktivitet kan hente data fra tjenesten og vise dataene på enhetens skjerm.

Følgende kode er en komplett (men ikke veldig nøyaktig) værservice:

offentlig klasse MyWeatherService utvider tjenesten {Messenger messengerToClient = null; MyIncomingHandler myIncomingHandler = ny MyIncomingHandler (); Messenger messengerToService = nytt Messenger (myIncomingHandler); @Override public IBinder onBind (Intent Intent) {return messengerToService.getBinder ();} klasse MyIncomingHandler utvider Handler {@Override public void handleMessage (Message incomingMessage) {messengerToClient = incomingMessage. svare på; Bundle reply = new Bundle (); svare. putString ("vær", "Det er mørkt om natten."); Melding replyMessage = Melding. få tak i(); replyMessage. setData (svar); prøv {messengerToClient. send (replyMessage);} catch (RemoteException e) {e. printStackTrace ();}}}}

I en annen pakke setter du koden for å ringe værtjenesten. Her er noen prøvekode:

offentlig klasse ServiceConsumerActivity utvider Aktivitetsredskaper OnClickListener {Messenger messengerToService = null; MyIncomingHandler myIncomingHandler = ny MyIncomingHandler (); Messenger messengerFromService = nytt Messenger (myIncomingHandler); ServiceConnection connection = ny MyServiceConnection (); SharedPreferences prefs; boolean isBound = false; void bind () {Intent intention = new Intent (); hensikt. setAction ("com. allmycode. WEATHER"); isBound = bindService (intent, tilkobling, kontekst. BIND_AUTO_CREATE);} offentlig tomtqueryService () {hvis (erBound) {Bundle bundle = new Bundle (); bunt. putString ("sted", "Philadelphia"); Meldingsmelding = Melding. få tak i(); budskap. replyTo = messengerFromService; budskap. setData (bundle); prøv {messengerToService. send (melding);} fangst (RemoteException e) {e. printStackTrace ();}} else {textView1. setText (R. streng. service_not_bound);}} klasse MyIncomingHandler utvider Handler {@Override public void handleMessage (Message msg) {Bundle bundle = msg. GetData (); textView1. setText (bundle. getString ("weather"))}} void unbind () {hvis (isBound) {unbindService (tilkobling); isBound = false;}} klasse MyServiceConnection implementerer ServiceConnection {public void onServiceConnected (Komponentnavn klassenavn, IBinder-bindemiddel) {messengerToService = nytt Messenger (bindemiddel);} offentlig tomgang onServiceDisconnected (ComponentName n) {messengerToService = null;} // t inkluderer onCreate-metoden eller // onClick-metoden i dette eksemplet.}

Selvfølgelig overlever ingen app uten noen elementer i manifestfilen. For å registrere denne delenes tjeneste, trenger du et element av følgende type:



Broadcast-mottakere

Når du sender en kringkasting, slår du en hensikt ut i naturen. Broadcast-mottakere med kompatible intentfiltre våkner opp og gjør noe nyttig med kringkastingsinformasjonen. (Etter å ha gjort noe med kringkastingsinformasjonen, går mottakeren tilbake i søvn. I min neste inkarnasjon vil jeg være en kringkasting mottaker.)

For å lage din egen kringkasting mottaker, utvider du Android's BroadcastReceiver-klassen, og du erklærer en onReceive metode. For eksempel svarer følgende kode til matchende sendinger:

offentlig klasse MyReceiver utvider BroadcastReceiver {@Override public void onReceive (Kontekstkontekst, Intent Intent) {// Gjør viktige ting}}

En annen app oppretter en kringkasting med kode av følgende type:

Intent Intent = Ny Intent (); hensikt. setAction ("com. allmycode. ACTION"); sendBroadcast (hensikt);

Du kan registrere en kringkastingsmottaker i AndroidManifest.xml-fil:


For mer fleksibilitet kan du registrere en mottaker i Java-koden din. Den følgende Java-koden gjør i hovedsak hva elementet i en AndroidManifest. xml-fil gjør:

IntentFilter filter = ny IntentFilter (); filter. addAction ("com. allmycode. ACTION"); registerReceiver (ny MyReceiver (), filter);

Innholdsleverandører

En apps innholdsleverandør gjør data tilgjengelig for andre apper som kjører på samme enhet. Leverandørens grensesnitt ligner databasens grensesnitt, med tabeller, rader, markører og alle de gode greiene. For eksempel ser koden for å spørre en innholdsleverandør slik ut:

offentlig markørspesifikasjon (Uri uri, String [] kolonner, String whereClause, String [] whereArgs, String sortOrder) {Markørmarkør = null; int kode = uriMatcher. kamp (URI); hvis (kode == 1) {cursor = db. spørring (SIMPLETABLE, kolonner, whereClause, whereArgs, null, null, sortOrder); ellers hvis (kode == 2) {String [] columnNames = {"_id", "navn", "beløp"}; String [] rowValues ​​= {"Table", "4", "2"}; MatrixCursor matrixCursor = ny MatrixCursor (columnNames); matrixCursor. addRow (rowValues); cursor = matrixCursor;} returmarkør;}

Fragments

A fragment er som en visning - en synlig ting som du kan vise i en aktivitet. Men i motsetning til en visning har et fragment egne livssyklusmetoder. Så Android kan lage en liten stabel fragmenter inne i en aktivitet. Når brukeren trykker på Back-knappen, åpner Android et fragment av stakken. (Hvis det ikke er noen fragmenter som skal pop, åpner Android hele aktiviteten utenfor oppgavestakken.)

Du kan sette et fragment i følgende rammeoppsett:


For å sette et fragment inn i oppsettet, utfører du en fragmentertransaksjon. Slik ser en fragmentertransaksjon ut:

DocsFragment docsFragment = DocsFragment. newInstance (index); FragmentManager fragmentManager = getFragmentManager (); FragmentTransaction fragmentTransaction = fragmentManager. beginTransaction (); fragmentTransaction. erstatt (R. id. docs, docsFragment); fragmentTransaction. addToBackStack (null); fragmentTransaction. begå();

Intent and Intent Filters

Når en hensikt oppfyller riktig hensikt filter, er resultatet en kamp laget i himmelen. Men reglene for matchende hensikter med filtre er kompliserte. Reglene leser som de lovbestemte klausulene i en fortjenesteavtale.

Du kan bruke Java-metoder for å beskrive en hensikt. Her er noen ofte brukte metoder:

  • setAction: Angir intensjonens handling. (En hensikt kan bare ha én handling.)

  • addCategory: Legger til en kategori til hensikten. (En hensikt kan ha mange kategorier.)

  • setData: Angir intentens URI, og fjerner hensiktens MIME-type (hvis hensikten har en MIME-type).

  • setType: Angir intensjonens MIME-type og fjerner hensiktens URI (hvis hensikten har en URI).

  • setDataAndType: Angir både hensiktens URI og hensiktens MIME-type. Ifølge dokumentene, "Denne metoden bør meget sjelden brukes. "

Du kan også bruke XML-koden for å beskrive en hensikt.


I URI // www.allmycode. com: 80 / android, ordningen er http, verten er www. allmycode. com, porten er 80, og banen er android. Myndigheten (som ikke er en av attributter i et element, men er nyttig å vite om) er www. allmycode. com: 80.

Du angir vanligvis en intensjonsfilters verdier i AndroidManifest. xml-fil. Men i Java-kode, android. innhold. IntentFilter-klassen har mange nyttige metoder. Her er noen av dem:

  • addAction: Legger til en handling til filteret.

  • addCategory: Legger til en kategori i filteret.

  • addDataScheme: Legger til en skjema til filteret.

  • addDataAuthority: Legger til en autoritet til filteret.

  • addDataPath: Legger til en bane til filteret.

  • addDataType: Legger til en MIME-type i filteret.

Et intensjonsfilter kan ha mange handlinger, mange kategorier og så videre.

Her er en kort liste over krav til en kamp mellom en hensikt og et hensiktsfilter. Denne listen er ikke fullført, så hvis du vil ha en komplett liste, kjøper du bedre Android Application Development All-in-One for Dummies av Barry Burd.

  • Hvis en hensikt har en handling, må et hensiktfilter ha en identisk handling for å matche hensikten. Intentfilteret kan ha flere handlinger. En hvilken som helst av disse tilleggsaksjonene har ingen effekt på kampen.

  • Hvis en hensikt har kategorier, må en hensikt filter ha disse (og muligens flere) kategorier for å matche hensikten.

  • Hvis en hensikt har en MIME-type, må et hensiktfilter ha en tilsvarende MIME-type for å matche hensikten. Intentfilteret kan ha flere MIME-typer. En hvilken som helst av disse ekstra MIME-typer har ingen effekt på kampen.

  • Hvis et hensiktsfilter har MIME-typer, må en hensikt å ha en MIME-type for å matche hensiktsfiltret, og hensikten er MIME-typen må samsvare med et av filterets MIME-typer.

  • I en begrenset grad kan matchingen av MIME-typer innebære jokertegn og vanlige uttrykk.

  • Hvis en hensikt har en URI-ordning, må et hensiktsfilter ha en matchende URI-ordning for å matche hensikten.

  • Hvis et hensiktsfilter har URI-ordninger, må du ha en URI-ordning for å matche intentfilteret, og intentens URI-skjema må samsvare med et av filterets URI-ordninger.

For å fullføre denne listen kopierer du de to siste reglene, endrer et ord eller to i hver av kopiene:

  • Hvis en hensikt har en URI vert , for å matche Intent, et intentfilter må ha en matchende URI vert .

  • Hvis et intentfilter har URI verter , for å matche intentfilteret, må en hensikt ha en URI vert og intentens URI vert < må samsvare med et av filterets URI vert s . Hvis en hensikt har en URI

  • port , for å matche hensikten, må et hensiktsfilter ha en tilsvarende URI port . Hvis et hensiktsfilter har URI

  • porter , for å matche intentfilteret, må en hensikt ha en URI port og hensiktens URI port < må samsvare med et av filterets URI por t s . Hvis en hensikt har en URI bane

  • , for å matche hensikten, må et hensiktsfilter ha en matchende URI bane . Hvis et intentfilter har URI baner

  • , for å matche intentfilteret, må en hensikt ha en URI bane og hensiktens URI bane

Vanligvis brukt kode i Android Application Development - dummies

Redaktørens valg

10 Måter å varme opp og slappe av før og under GRE-dummies

10 Måter å varme opp og slappe av før og under GRE-dummies

GRE er like mye fysisk trening som det er mentalt, og det er mer som en maraton enn en sprint. Hvis du kommer ut av blokkene med en sprintens tempo, er du sikker på å raskt eksosere deg selv. Nøklene til å komme til enden og fullføre sterken, oppvarmer seg mentalt og holder seg i orden ...

Argument analyse på GRE - strategier og praksis spørsmål - dummies

Argument analyse på GRE - strategier og praksis spørsmål - dummies

Når du takler et argument Analysespørsmål på GRE, din jobb er å identifisere om forfatteren har gjort en tilstrekkelig jobb med å presentere og støtte sin stilling. Graduate skoler forventer at du ikke bare skal lese med forståelse, men også å undersøke informasjonen og argumentet som presenteres og sortere logikken som er rimelig fra ...

Argument analyse på GRE Verbal Essay Test - praksis spørsmål - dummies

Argument analyse på GRE Verbal Essay Test - praksis spørsmål - dummies

Når du tar GRE Verbal testen, et av essay spørsmålene vil be deg om å analysere et argument. Du må lese argumentet, se på sine underliggende forutsetninger, og deretter forklare hvordan disse forutsetningene påvirker argumentet. Følgende praksis spørsmål ligner på hva du finner på testen. Øvelsesspørsmål Tid: ...

Redaktørens valg

Oversikt over sikkerhetspolitikk for mobilenheter - dummier

Oversikt over sikkerhetspolitikk for mobilenheter - dummier

Sikkerhetspolitikk for mobile enheter som knytter seg til bedriftsnettverket kan deles inn i to kategorier: retningslinjer for godkjente enheter og retningslinjer for andre enheter. Enhetspolicyer. Her er en oversikt over de to kategoriene av enhetsretningslinjer som du må kommunisere med brukere: Politikk for godkjente enheter: Denne policyen gjelder for alle bedriftsutstedte ...

Oversikt over mobilenhetssikkerhet gjennom skybaserte beskyttelser - dummies

Oversikt over mobilenhetssikkerhet gjennom skybaserte beskyttelser - dummies

Ved hjelp av skybasert endpoint-sikkerhet er en metode for å beskytte enterprise mobile enheter fra virus, malware, spam og andre trusler. Den faktiske trusselsbeskyttelsen skjer i skyen eller sentralisert datasenter for sluttpunktsprogramvareleverandøren i denne typen distribusjon. Trafikk til og fra de mobile enhetene blir omdirigert på enheten til ...

Oversikt over mobilenhetssikkerhet gjennom enhetsadministrasjon - dummies

Oversikt over mobilenhetssikkerhet gjennom enhetsadministrasjon - dummies

Nå som du har tenkt på å sikre mobilen enheter på nettverket ditt fra trusler som virus og malware, er det på tide å planlegge for ekstern håndheving av retningslinjer for enhetsadministrasjon eller sikkerhet. Du får ideen. Det handler om enhetssikkerhetsetikett, om å ta de enkle, men ofte ignorerte trinnene for å beskytte vitale data lagret på ...

Redaktørens valg

Hånd- og håndleddskader grunnleggende for legeassistenteksamen - dummies

Hånd- og håndleddskader grunnleggende for legeassistenteksamen - dummies

Legeassistenteksamen PANCE) vil stille spørsmål om forhold som påvirker hånden og håndleddet. De spenner fra godartede cyster til mindre forstuinger til utbruddssvikt, så gjør deg kjent med det grunnleggende. Ganglioncyster En vanlig myk vævsmasse som du kan se på hendene og håndleddene, er en ganglioncyst, også kjent ...

HIV Grunnleggende for legeassistenteksamen - dummies

HIV Grunnleggende for legeassistenteksamen - dummies

For legeassistenteksamen (PANCE), bør du være kjent med noen generelle ting som angår HIV, spesifikke infeksjoner relatert til HIV, og bivirkninger av visse medisiner. HIV står for humant immundefektvirus. Risikofaktorer for å skaffe hiv inkluderer høyrisiko seksuell atferd og narkotikamisbruk, spesielt intravenøs bruk med skitne nåler. Kommer i kontakt med ...

Mageområdet for legeassistenteksamen - dummies

Mageområdet for legeassistenteksamen - dummies

Etter å ha reist gjennom spiserøret, din neste destinasjon i forberedelsene til legeassistenteksamen (PANCE) er det livlige magesektoren. Inneholder cardia, fundus, antrum og pylorus, er dette området bare moden for patologi og fremtidige PANCE-spørsmål. Magen er et sted hvor mye av fordøyelsen finner sted. Hovedcellene ...