Android program za preklop med načini. Preklapljanje med aplikacijami v sistemu Android. Uporabite adb za varnostno kopiranje programske opreme v vašem računalniku

Zavihek Zaganjalnik, ki se odpre na začetnem zaslonu, vsebuje ikone za vse aplikacije, nameščene v vašem telefonu, vključno z aplikacijami, prenesenimi in nameščenimi iz Android Market ali drugih virov.

Ko odprete aplikacijo, se druge aplikacije, ki jih uporabljate, še naprej izvajajo, predvajajo glasbo, prikazujejo spletne strani in drugo. Hitro lahko preklapljate med aplikacijami za delo z več aplikacijami hkrati. operacijska soba sistem Android in aplikacije, ki se izvajajo na njem, komunicirajo tako, da neuporabljene aplikacije ne porabljajo virov. Aplikacije se ustavijo in po potrebi znova zaženejo. Zato ni razloga za zaustavitev aplikacij, razen če ste prepričani, da prenesena aplikacija ne deluje pravilno. Za podrobnosti o tem, kako aplikacije uporabljajo pomnilnik in kako upravljati te aplikacije, glejte.

Več o iskanju in nameščanju dodatnih aplikacij za vaš telefon (vključno z orodji za delovanje, pripomočki, igre, referenčni materiali in druge vrste programsko opremo) glejte v razdelku.

Odpiranje in zapiranje Launchpad-a

Če imate odprtih več aplikacij, kot jih lahko spravite v zaganjalnik, se lahko pomaknete po zaganjalniku navzgor ali navzdol, da si ogledate vse aplikacije.

Na domači zaslon lahko dodate ikono aplikacije tako, da pritisnete in držite ikono na zaganjalniku, dokler ne zavibrira, nato pa povlečete ikono na želeno mesto na domačem zaslonu.

Launchpad se samodejno zapre, ko tapnete ikono, da odprete aplikacijo, ali premaknete ikono z Launchpad na začetni zaslon.

Odpiranje aplikacije

  • Kliknite ikono aplikacije na plošči zaganjalnika.
  • Tapnite ikono aplikacije na začetnem zaslonu.

Preklopite na nedavno uporabljeno aplikacijo

Odpre se majhno okno z ikonami vseh nedavno uporabljenih aplikacij.

  • Tapnite ikono, da odprete z njo povezano aplikacijo.

Ali kliknite gumb Nazaj da se vrnete na trenutno aplikacijo.

Izdelujem aplikacijo, ki mora imeti možnost preklapljanja med aplikacijami, ki jih ima uporabnik odprte (na primer aplikacije v večopravilnem meniju), imam ComponentName 10 novih aplikacij in jih lahko zaženem (tj. preklopim nanje ) Všečkaj to:

Namen = nov namen(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(info); startActivity(namen);

Vendar, ko poskušam spremeniti na Facebooku (in verjetno v nekaterih podobnih aplikacijah), zahteva določeno dovoljenje:

java.lang.securityException: zavrnitev dovoljenja: začetna namera (flg = 0x10000000 cmp = com.facebook.katana/.aktivnost ) zahteva com.facebook.permission.prod.FB_APP_COMMUNICATION

Ali obstaja način, da se temu izognete tako, da dejansko preklopite na aplikacijo, namesto da bi jo zagnali? Ali lahko le pošljem fokus v drugo aplikacijo?

0

1 odgovorov

Če nimate dovoljenja, mislim, da lahko začnete dejavnost druge aplikacije le, če je njen atribut "izvoz" nastavljen na true. Facebooku podobna aplikacija lahko to nastavi na false in drugi aplikaciji ne dovoli dostopa do svoje dejavnosti.

Tega nisem preizkusil sam, vendar lahko poskusite naslednje kode:

Namen extApp= getPackageManager().getLaunchIntentForPackage(facebook-ime-paketa); this.startActivity(extApp);

Upam, da to pomaga.

Aplikacija ni vedno sestavljena iz enega zaslona. Na primer, ustvarili smo zelo uporaben program in uporabnik želi vedeti, kdo je njen avtor. Klikne na gumb »Vizitka« in preusmerjen je na nov zaslon, kjer so uporabni podatki o različici programa, avtorju, naslovu spletne strani, koliko mačk ima avtor itd. Zaslon dejavnosti si predstavljajte kot spletno stran s povezavo do druge strani. Če pogledate kodo v datoteki MainActivity.java iz prejšnjih lekcij boste videli, da naš razred Glavna dejavnost velja tudi za dejavnost(oziroma njegovih dedičev) oziroma, natančneje, podedoval po njem.

Javni razred MainActivity razširja AppCompatActivity

Kot morda ugibate, bi morali ustvariti nov razred, ki bi lahko bil podoben Glavna dejavnost in potem ob pritisku na gumb nekako preklopi nanj.

Za poskus bomo vzeli program iz prve lekcije in uporabili gumb za poskuse (ali ustvarjanje nov projekt z enim gumbom na zaslonu). Nato ustvarimo nov obrazec za prikaz uporabnih informacij. Na primer, pokažimo uporabniku, kaj počne mačka, ko gre levo in desno. Strinjam se, to je zelo pomembna informacija, ki daje ključ do razkritja vesolja.

Novo dejavnost bomo ustvarili ročno, čeprav ima studio že pripravljene predloge. Toda tam ni nič zapletenega in za boljše razumevanje je koristno narediti vse ročno.

Ustvarimo novo označevalno datoteko XML activity_about.xml v mapi res/postavitev. Desni klik na mapo postavitev in izberite med kontekstni meni Novo | Datoteka vira postavitve. Prikaže se pogovorno okno. V prvo polje vnesite ime datoteke dejavnost_o. V drugem morate vnesti korenski element. Privzeto je tam ConstraintLayout. Izbrišite besedilo in vnesite ScrollView. Vnos nekaj znakov je dovolj, da studio predlaga že pripravljene možnosti, lahko takoj pritisnete Enter, ne da bi čakali na vnos celotne besede:

Dobili boste ustrezno praznino, v katero bomo vstavili element TextView.

Informacije bodo pridobljene iz virov, in sicer nizovnega vira about_text. Zdaj je označen z rdečo, kar pomeni, da ni informacij. Možno je bilo pritisniti Alt+Enter in vnesite besedilo v pogovorno okno. Toda za naš primer ta metoda ne bo delovala, saj bo naše besedilo večvrstično z uporabo kontrolnih znakov. Naredimo torej drugače. Odprimo datoteko res/vrednosti/nizi.xml in ročno vnesite naslednje besedilo:

V bližini Lukomorye je zeleni hrast;\n Na tem hrastu zlata veriga:\n Tako podnevi kot ponoči znanstvenik kat\nVse se vrti po verigi;\nGre prav- pesem se začne,\n levo- pripoveduje pravljico.

Uporabili smo najpreprostejše oznake za oblikovanje besedila HTML, kot je , , . Za naš primer je dovolj, da s krepkim tiskom označimo besede, ki se nanašajo na mačko in smer gibanja. Za premik besedila v novo vrstico uporabite simbole \n. Dodajmo še en vir niza za naslov novega zaslona:

O programu

Ugotovili smo markacije. Nato morate ustvariti razred za okno AboutActivity.java. Izberite v meniju Datoteka | Novo | Java razred in izpolnite zahtevana polja. Sprva je dovolj, da navedete samo ime. Potem se boste ukvarjali z drugimi področji.

Vzemimo prazno.

Zdaj je razred skoraj prazen. Dodajmo kodo ročno. Razred mora dedovati iz abstraktnega razreda dejavnost ali njegovi sorodniki FragmentActivity, AppCompatActivity itd. Dodajmo razširi dejavnost. Razred dejavnosti mora imeti metodo onCreate(). Kazalec miške postavite znotraj razreda in izberite v meniju Koda | Metode preglasitve(Ctrl+O). V pogovornem oknu poiščemo želeni razred; za hitro iskanje lahko vtipkate prve znake na tipkovnici. V ustvarjeni metodi morate poklicati metodo setContentView(), ki bo pripravljeno oznako naložil na zaslon. To možnost bomo imeli.

Paket ru.alexanderklimov.helloworld; uvoz android.app.Activity; uvoz android.os.Bundle; /** * Ustvaril Alexander Klimov dne 12/01/2014. */ javni razred AboutActivity razširja aktivnost ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ) )

Zdaj pride najpomembnejši del. Naša naloga je, da gremo na nov zaslon, ko kliknemo gumb na prvem zaslonu. Vrnimo se k razredu Glavna dejavnost. Napišimo obravnavo klikov gumbov:

Public void onClick(View view) ( Intent intent = new Intent(MainActivity.this, AboutActivity.class); startActivity(intent); )

Tu sem uporabil metodo obdelave klika na gumb, opisano v lekciji.

Za zagon novega zaslona morate ustvariti primerek razreda Namera in navedite trenutni razred v prvem parametru in razred, v katerega želite iti, v drugem, imamo to AboutActivity. Po tem se pokliče metoda startActivity(), ki odpre nov zaslon.

Če zdaj poskusite preizkusiti aplikacijo v emulatorju, boste prejeli sporočilo o napaki. Kaj smo storili narobe? Zamudili smo en pomemben korak. Registrirati morate novo dejavnost v manifestu AndroidManifest.xml. Poiščite to datoteko v svojem projektu in dvokliknite nanjo. Odpre se okno za urejanje datoteke. Dodajte novo oznako za zaključno oznako za prvo aktivnost. Tipkajte sami in aktivno uporabljajte pozive. Dobili boste naslednje:

Tukaj pride vir niza prav about_title. Zaženemo aplikacijo, kliknemo na gumb in dobimo okno O programu. Tako smo se naučili ustvariti novo okno in ga priklicati s klikom na gumb. Na voljo pa imamo mega priročen program - zdaj bomo imeli vedno pri roki namig, kaj počne mačka, ko gre levo.

Še enkrat vas opozarjam na dejstvo, da mora drugi ustvarjeni razred dejavnosti podedovati razred dejavnost ali podobne ( ListActivity itd.), imeti označevalno datoteko XML (če je potrebno) in biti navedena v manifestu.

Po klicu metode startActivity() sprožila se bo nova aktivnost (v tem primeru AboutActivity), bo postalo vidno in se premaknilo na vrh sklada, ki vsebuje delujoče komponente. Pri klicu metode končati () iz nove dejavnosti (ali ko pritisnete tipko za vrnitev strojne opreme) bo zaprt in odstranjen iz sklada. Razvijalec se lahko po isti metodi tudi pomakne do prejšnje (ali katere koli druge) dejavnosti startActivity().

Ustvarjanje tretjega zaslona - metoda za lene

Programerji so tako kot mačke lena bitja. Vedno si zapomnite, da morate za dejavnost ustvariti oznako in razred, ki deduje dejavnost, nato pa ne pozabite registrirati razreda v manifestu - no dobro.

V tem primeru izberite v meniju Datoteka | Novo | Dejavnost | Osnovna dejavnost(ali druga predloga). Nato se prikaže znano okno za ustvarjanje nove dejavnosti. Izpolnite zahtevana polja.

Kliknite na gumb Končaj in dejavnost bo pripravljena. Če želite to preveriti, odprite datoteko manifesta in poiščite nov vnos. Da o razredih in označevalnih datotekah niti ne govorim, pred vami se bodo pojavile same.

Sami dodajte nov gumb na glavni zaslon dejavnosti in napišite kodo za preklop na ustvarjeno dejavnost.

Najprej bi vam svetoval, da ročno ustvarite vse potrebne komponente za novo dejavnost, da boste razumeli razmerje med razredom, oznako in manifestom. In ko se tega naučite, lahko uporabite čarovnika za ustvarjanje dejavnosti, da pospešite svoje delo.

Posredovanje podatkov med aktivnostmi

Uporabili smo preprost primer za klic drugega zaslona dejavnosti. Včasih ne samo, da morate poklicati nov zaslon, ampak tudi prenesti podatke nanj. Na primer uporabniško ime. V tem primeru morate uporabiti posebno območje extraData, ki ga ima razred Namera.

Regija extraData je seznam parov ključ/vrednost, ki se prenaša skupaj z namero. Nizi se uporabljajo kot ključi, kateri koli primitivni podatkovni tipi, nizi primitivov, predmeti razreda pa se lahko uporabljajo za vrednosti Sveženj in itd.

Za prenos podatkov v drugo dejavnost uporabite metodo dajExtra():

Intent.putExtra("Ključ", "Vrednost");

Prejemna dejavnost mora poklicati ustrezno metodo: getIntExtra(), getStringExtra() itd.:

Int count = getIntent().getIntExtra("name", 0);

Ponovimo prejšnji primer. Imamo že tri aktivnosti. Prva dejavnost bo imela dve besedilni polji in gumb. Videz lahko takole:

Pri drugi aktivnosti SecondActivity nastavite element TextView, v katerem bomo prikazali besedilo, prejeto iz prve aktivnosti. Napišimo naslednjo kodo za metodo onCreate() pri drugi dejavnosti.

@Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); String user = "Animal"; String gift = "donut hole"; TextView infoTextView = (TextView)findViewById( R .id.textViewInfo); infoTextView.setText(user + ", dobili ste " + darilo);

Če zdaj zaženemo program in preprosto prikličemo drugo okno, kot je bilo opisano v prvem delu članka, bomo videli privzeti napis Žival, dali so ti luknjo za krofe. Strinjam se, zelo nadležno je prejemati takšna sporočila.

Popravimo situacijo. Dodajte kodo prvi dejavnosti:

Public void onClick(View view) ( EditText userEditText = (EditText) findViewById(R.id.editTextUser); EditText giftEditText = (EditText) findViewById(R.id.editTextGift); Intent intent = new Intent(MainActivity.this, SecondActivity. class); // potisnite besedilo iz prvega besedilnega polja v ključ uporabniškega imena intent.putExtra("username", userEditText.getText().toString()); // potisnite besedilo iz drugega besedilnega polja v darilni ključ intent.putExtra("darilo" ", giftEditText.getText().toString()); startActivity(namen); )

Predmet smo postavili v posebno posodo Namera dva ključa z vrednostmi, ki so vzete iz besedilnih polj. Ko uporabnik vnese podatke v besedilna polja, bodo šli v ta vsebnik in posredovani drugi dejavnosti.

Druga dejavnost mora biti pripravljena na toplo sprejemanje sporočil, kot sledi (krepko).

// Privzete vrednosti String user = "Animal"; Darilo za vrvico = "luknja za krof"; uporabnik = getIntent().getExtras().getString("uporabniško ime"); darilo = getIntent().getExtras().getString("darilo"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(user + " , dobili ste " + darilo);

Zdaj je sporočilo videti manj žaljivo in za nekatere celo prijetno. V zapletenih primerih je pri obdelavi podatkov priporočljivo dodati ček. Lahko pride do situacij, ko zaženete drugo dejavnost s praznimi podatki tipa nič, kar lahko povzroči zrušitev aplikacije.

V našem primeru vemo, da pričakujemo vrednost niza, zato lahko kodo prepišemo takole:

Namen namena = getIntent(); uporabnik = intent.getStringExtra("uporabniško ime");

Uporabnik = getIntent().getStringExtra("uporabniško ime");

Program ima pomanjkljivost - ni jasno, od koga prejemamo pozdrave. Nobena dobro vzgojena opica ne bo sprejela darila od anonimnega vira. Kot domačo nalogo dodajte še eno besedilno polje za vnos imena uporabnika, ki pošilja sporočilo.

Google priporoča uporabo naslednje oblike za ključe: ime vašega paketa kot predpono, ki mu sledi sam ključ. V tem primeru ste lahko prepričani o edinstvenosti ključa pri interakciji z drugimi aplikacijami. Nekaj ​​podobnega:

Javni končni statični niz USER = "ru.alexanderklimov.myapp.USER";

Kdo je uokviril mačko Vasko - dobimo rezultat nazaj

Ni vedno dovolj, da preprosto posredujete podatke drugi dejavnosti. Včasih morate vrniti podatke iz druge dejavnosti, ko je ta zaprta. Če smo prej uporabljali metodo startActivity(namen namena), potem obstaja sorodna metoda startActivityForResult(namen namena, int koda zahteve). Razlika med metodama je dodatni parameter Zahtevaj kodo. To je v bistvu samo celo število, ki ga lahko dobite sami. Potreben je za razlikovanje od koga je prišel rezultat. Recimo, da imate pet dodatnih zaslonov in jim dodelite vrednosti od 1 do 5, s to kodo pa lahko določite, čigav rezultat morate obdelati. Uporabite lahko vrednost -1, potem bo to enako kot klic metode startActivity(), tj. ne bomo dobili rezultatov.

Če uporabljate metodo startActivityForResult(), potem morate za prejem rezultata preglasiti metodo v svoji kodi onActivityResult() in obdelajte rezultat. Zmedeni? Poglejmo si primer.

Recimo, da ste detektiv. Prispela je informacija, da sta bila v gostinskem lokalu z mize vplivne osebe ukradena dva kosa klobase in drugih izdelkov. Sum je padel na tri osumljence - vrano, kužka in mačka Vaska.

Eden od obiskovalcev je ponudil serijo fotografij iz svojega bahavega iPhona:


Obstaja tudi pričevanje druge priče: In Vaska posluša in jé.

Ustvarite nov projekt Sherlock z dvema dejavnostma. Na prvem zaslonu bo gumb za preklop na drugi zaslon in besedilna oznaka, v kateri bo prikazano ime tatu.


Vrh