Program pre Android na prepínanie režimov. Prepínanie medzi aplikáciami v systéme Android. Použite adb na zálohovanie softvéru v počítači

Karta Launcher, ktorá sa otvára z domovskej obrazovky, obsahuje ikony pre všetky aplikácie nainštalované v telefóne vrátane aplikácií stiahnutých a nainštalovaných z Android Market alebo iné zdroje.

Keď otvoríte aplikáciu, ostatné používané aplikácie sa nezastavia, pokračujú v prehrávaní hudby, zobrazovaní webových stránok a podobne. Medzi aplikáciami môžete rýchlo prepínať a pracovať s viacerými aplikáciami naraz. operačná sála systém Android a aplikácie na ňom spustené komunikujú tak, že nepoužívané aplikácie nespotrebúvajú zdroje. Aplikácie sa zastavia a v prípade potreby znova spustia. Preto nie je dôvod zastavovať aplikácie, pokiaľ si nie ste istí, že stiahnutá aplikácia nefunguje správne. Podrobnosti o tom, ako aplikácie využívajú pamäť a ako tieto aplikácie spravovať, nájdete v časti .

Získajte informácie o hľadaní a inštalácii ďalších aplikácií pre váš telefón (vrátane nástrojov na zvýšenie výkonu, komunálne služby, hry, referenčné materiály a iné typy softvér) pozri v časti.

Otvorenie a zatvorenie Launchpadu

Ak máte otvorených viac aplikácií, ako sa zmestí do spúšťača, môžete posúvať spúšťač nahor alebo nadol, aby ste videli všetky aplikácie.

Ikonu aplikácie môžete pridať na domovskú obrazovku stlačením a podržaním ikony na spúšťači, kým nezavibruje, a potom potiahnutím ikony na požadované miesto na domovskej obrazovke.

Launchpad sa automaticky zatvorí, keď klepnete na ikonu, aby ste otvorili aplikáciu alebo presunuli ikonu z Launchpadu na domovskú obrazovku.

Otvorenie aplikácie

  • Kliknite na ikonu aplikácie na paneli Launcher.
  • Klepnite na ikonu aplikácie na domovskej obrazovke.

Prepnite na nedávno použitú aplikáciu

Otvorí sa malé okno s ikonami všetkých naposledy použitých aplikácií.

  • Klepnutím na ikonu otvoríte priradenú aplikáciu.

Alebo kliknite na tlačidlo späť pre návrat do aktuálnej aplikácie.

Vytváram aplikáciu, ktorá musí byť schopná prepínať medzi aplikáciami, ktoré má používateľ otvorené (napríklad aplikácie v ponuke multitaskingu), mám ComponentName 10 nových aplikácií a môžem ich spustiť (t.j. prepínať na ne ) Páči sa ti to:

Zámer = nový Zámer(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(info); startActivity(intent);

Keď sa však pokúsim zmeniť na Facebooku (a pravdepodobne aj v niektorých podobných aplikáciách), požiada o konkrétne povolenie:

java.lang.SecurityException: Odmietnutie povolenia: počiatočný zámer ( flg=0x10000000 cmp=com.facebook.katana/.activity.FbFragmentChromeActivity ) z ProcessRecord(42310bc0 8578:com.javanut13.multa089pidheads/u=00581905050 ) vyžaduje com.facebook.permission.prod.FB_APP_COMMUNICATION

Existuje spôsob, ako to obísť skutočným prepnutím na aplikáciu namiesto jej spustenia? Môžem poslať zameranie do inej aplikácie?

0

1 odpovede

Ak nemáte povolenie, myslím si, že aktivitu inej aplikácie môžete spustiť len vtedy, keď je jej atribút „export“ nastavený na hodnotu true. Aplikácia podobná Facebooku to môže nastaviť na hodnotu false a neumožní inej aplikácii prístup k jej aktivite.

Netestoval som to sám, ale môžete vyskúšať nasledujúce kódy:

Intent extApp= getPackageManager().getLaunchIntentForPackage(facebook-package-name); this.startActivity(extApp);

Dúfam, že to pomôže.

Aplikácia nie vždy pozostáva z jednej obrazovky. Napríklad sme vytvorili veľmi užitočný program a používateľ chce vedieť, kto je jej autorom. Klikne na tlačidlo „O aplikácii“ a prejde na stránku nová obrazovka, kde sú užitočné informácie o verzii programu, autorovi, adrese webu, koľko mačiek má autor atď. Predstavte si obrazovku aktivity ako webovú stránku s odkazom na inú stránku. Ak sa pozriete na kód v súbore MainActivity.java z predchádzajúcich hodín, uvidíte, že naša trieda Hlavná činnosť platí aj pre Aktivita(alebo jeho dedičov) alebo presnejšie dedili po ňom.

Verejná trieda MainActivity rozširuje AppCompatActivity

Ako asi tušíte, mali by sme vytvoriť novú triedu, ktorá by mohla byť podobná Hlavná činnosť a potom sa na to nejako prepnúť po stlačení tlačidla.

Na experiment zoberieme program z prvej hodiny a použijeme tlačidlo na experimenty (alebo vytvoríme nový projekt jedným tlačidlom na obrazovke). Ďalej vytvoríme nový formulár na zobrazenie užitočných informácií. Napríklad ukážme používateľovi, čo robí mačka, keď ide doľava a doprava. Súhlasíte, toto je veľmi dôležitá informácia, ktorá poskytuje kľúč k odhaleniu vesmíru.

Novú aktivitu vytvoríme ručne, hoci štúdio má pripravené šablóny. Ale nie je tam nič zložité a pre lepšie pochopenie je užitočné robiť všetko ručne.

Poďme vytvoriť nový súbor značiek XML activity_about.xml v priečinku res/layout. Kliknite pravým tlačidlom myši na priečinok rozloženie a vyberte si z obsahové menu Nový | Zdrojový súbor rozloženia. Zobrazí sa dialógové okno. Do prvého poľa zadajte názov súboru aktivita_o. V druhom musíte zadať koreňový prvok. V predvolenom nastavení je tam ConstraintLayout. Vymažte text a zadajte ho ScrollView. Zadanie niekoľkých znakov stačí na to, aby štúdio navrhlo hotové možnosti, môžete okamžite stlačiť Enter bez čakania na zadanie celého slova:

Dostanete zodpovedajúci polotovar, do ktorého vložíme prvok TextView.

Informácie budú získané zo zdrojov, konkrétne zo zdroja reťazca o_texte. Teraz je zvýraznená červenou farbou, čo signalizuje absenciu informácií. Tlačiť sa dalo Alt+Enter a zadajte text do dialógového okna. Ale v našom príklade táto metóda nebude fungovať, pretože náš text bude viacriadkový s použitím riadiacich znakov. Tak poďme na to inak. Otvorme súbor res/values/strings.xml a ručne zadajte nasledujúci text:

Pri Lukomorye je zelený dub;\n Zlatá reťaz na tom dube:\n Vo dne aj v noci vedec mačka\nVšetko ide dookola v reťazci;\nIde to správny- skladba sa spustí,\n Vľavo- rozpráva rozprávku.

Použili sme najjednoduchšie značky HTML formátovania textu, ako napr , , . Pre náš príklad stačí zvýrazniť tučným písmom slová, ktoré sa týkajú mačky a smeru pohybu. Ak chcete presunúť text na nový riadok, použite symboly \n. Pridajme ďalší reťazec pre názov novej obrazovky:

O programe

Zistili sme značky. Ďalej musíte vytvoriť triedu pre okno AboutActivity.java. Vyberte si z ponuky Súbor | Nový | Trieda Java a vyplňte požadované polia. Najprv stačí uviesť iba meno. Potom sa budete zaoberať inými oblasťami.

Zoberme si prázdnotu.

Teraz je trieda takmer prázdna. Pridajme kód ručne. Trieda musí dediť z abstraktnej triedy Aktivita alebo ako jeho príbuzní FragmentActivity, AppCompatActivity atď. Pridajme rozširuje aktivitu. Trieda aktivity musí mať metódu onCreate(). Umiestnite kurzor myši do triedy a vyberte z ponuky Kód | Prepísať metódy(Ctrl+O). V dialógovom okne hľadáme požadovanú triedu, môžete zadať prvé znaky na klávesnici pre rýchle vyhľadávanie. Vo vytvorenej metóde musíte metódu zavolať setContentView(), ktorý načíta pripravené označenie na obrazovku. Túto možnosť budeme mať.

Balíček ru.alexanderklimov.helloworld; importovať android.app.Activity; importovať android.os.Bundle; /** * Vytvoril Alexander Klimov dňa 12/01/2014. */ verejná trieda AboutActivity rozširuje aktivitu ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ) )

Teraz prichádza najdôležitejšia časť. Našou úlohou je prejsť na novú obrazovku, keď klikneme na tlačidlo na prvej obrazovke. Vráťme sa do triedy Hlavná činnosť. Napíšme obsluhu kliknutia na tlačidlo:

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

Tu som použil metódu spracovania kliknutí na tlačidlo opísanú v lekcii.

Ak chcete spustiť novú obrazovku, musíte vytvoriť inštanciu triedy Zámer a označte aktuálnu triedu v prvom parametri a triedu, do ktorej chcete prejsť, v druhom, máme toto OAktivite. Potom sa zavolá metóda startActivity(), čím sa spustí nová obrazovka.

Ak sa teraz pokúsite otestovať aplikáciu v emulátore, zobrazí sa chybové hlásenie. Čo sme urobili zle? Chýbal nám jeden dôležitý krok. Musíte zaregistrovať nový Aktivita v manifeste AndroidManifest.xml. Nájdite tento súbor vo svojom projekte a dvakrát naň kliknite. Otvorí sa okno na úpravu súboru. Pridajte novú značku za záverečnou značkou na prvú aktivitu. Napíšte sami a aktívne používajte výzvy. Získate nasledovné:

Tu sa hodí zdroj reťazca o_názve. Spustíme aplikáciu, klikneme na tlačidlo a zobrazí sa okno O programe. Naučili sme sa teda, ako vytvoriť nové okno a vyvolať ho kliknutím na tlačidlo. A máme k dispozícii megapohodlný program - teraz budeme mať vždy po ruke náznak toho, čo mačka robí, keď ide doľava.

Ešte raz upozorňujem na skutočnosť, že druhá vytvorená trieda aktivity musí dediť od triedy Aktivita alebo podobné ( Zoznam Aktivita atď.), mať súbor značiek XML (ak sa vyžaduje) a musí byť uvedený v manifeste.

Po zavolaní metódy startActivity() spustí sa nová aktivita (v tomto prípade OAktivite), bude viditeľný a presunie sa na vrch zásobníka obsahujúceho spustené komponenty. Pri volaní metódy skončiť() z novej aktivity (alebo po stlačení hardvérového klávesu návratu) sa zatvorí a odstráni zo zásobníka. Vývojár môže tiež prejsť na predchádzajúcu (alebo akúkoľvek inú) aktivitu pomocou rovnakej metódy startActivity().

Vytvorenie tretej obrazovky - metóda pre lenivých

Programátori, podobne ako mačky, sú lenivé stvorenia. Vždy si pamätajte, že pre aktivitu musíte vytvoriť označenie a triedu, z ktorej sa dedí Aktivita, a potom nezabudnite zaregistrovať triedu v manifeste - no dobre.

V tomto prípade vyberte z ponuky Súbor | Nový | Činnosť | Základná činnosť(alebo iná šablóna). Ďalej sa zobrazí známe okno na vytvorenie novej aktivity. Vyplňte požadované polia.

Kliknite na tlačidlo Skončiť a aktivita bude pripravená. Ak to chcete overiť, otvorte súbor manifestu a skontrolujte nový záznam. O súboroch tried a značiek ani nehovorím, objavia sa pred vami samé.

Sami pridajte nové tlačidlo na obrazovku hlavnej aktivity a napíšte kód na prepnutie na vytvorenú aktivitu.

Najprv by som vám odporučil manuálne vytvoriť všetky potrebné komponenty pre novú aktivitu, aby ste pochopili vzťah medzi triedou, označením a manifestom. A keď na to prídete, môžete použiť Sprievodcu tvorbou aktivity na urýchlenie svojej práce.

Odovzdávanie údajov medzi aktivitami

Použili sme jednoduchý príklad na zavolanie inej obrazovky aktivity. Niekedy je potrebné nielen zavolať na novú obrazovku, ale aj preniesť na ňu dáta. Napríklad používateľské meno. V tomto prípade musíte použiť špeciálnu oblasť extraData, ktoré má trieda Zámer.

región extraData je zoznam párov kľúč/hodnota, ktorý sa prenáša spolu so zámerom. Reťazce sa používajú ako kľúče a pre hodnoty možno použiť akékoľvek primitívne dátové typy, polia primitív, objekty tried Bundle atď.

Ak chcete preniesť údaje do inej aktivity, použite metódu putExtra():

Intent.putExtra("Kľúč", "Hodnota");

Prijímacia aktivita musí volať nejakú vhodnú metódu: getIntExtra(), getStringExtra() atď.:

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

Zopakujme predchádzajúci príklad. Máme už tri aktivity. Prvá aktivita bude mať dve textové polia a tlačidlo. Vzhľad môže byť nasledovné:

Pri druhej aktivite Druhá aktivita nastaviť prvok TextView, v ktorom zobrazíme text prijatý z prvej aktivity. Napíšme nasledujúci kód metódy onCreate() pri druhej aktivite.

@Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); String user = "Zviera"; String gift = "diera na šišku"; TextView infoTextView = (TextView)findViewById( R .id.textViewInfo); infoTextView.setText(užívateľ + ", dostali ste " + darček);

Ak teraz spustíme program a jednoducho vyvoláme druhé okno, ako bolo popísané v prvej časti článku, potom sa nám zobrazí predvolený nápis Zviera, podali ti dieru na šišku. Súhlasíte, je dosť nepríjemné prijímať takéto správy.

Upravme situáciu. Pridajte kód do prvej aktivity:

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 // vloženie textu z prvého textového poľa do kľúča používateľského mena intent.putExtra("meno používateľa", userEditText.getText().toString() // vloženie textu z druhého textového poľa do darčekového kľúča intent.putExtra("darček" ", giftEditText.getText().toString()); startActivity(intent); )

Predmet sme umiestnili do špeciálneho kontajnera Zámer dva kľúče s hodnotami, ktoré sú prevzaté z textových polí. Keď používateľ zadá údaje do textových polí, prejdú do tohto kontajnera a prenesú sa do druhej aktivity.

Druhá aktivita by mala byť pripravená na vrelé prijímanie správ nasledovne (tučným písmom).

// Predvolené hodnoty ​​String user = "Zviera"; Šnúrkový darček = "diera na šišku"; user = getIntent().getExtras().getString("používateľské meno"); dar = getIntent().getExtras().getString("darček"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(user + " , dostali ste " + darček);

Správa teraz vyzerá menej urážlivo a pre niektorých dokonca príjemne. V zložitých príkladoch je vhodné pridať kontrolu pri spracovaní údajov. Môžu nastať situácie, keď spustíte druhú aktivitu s prázdnymi údajmi typu nulový, čo môže spôsobiť zlyhanie aplikácie.

V našom prípade vieme, že očakávame hodnotu reťazca, takže kód možno prepísať takto:

Zámer zámer = getIntent(); user = intent.getStringExtra("používateľské meno");

Používateľ = getIntent().getStringExtra("meno používateľa");

Program má nevýhodu - nie je jasné, od koho dostávame pozdravy. Žiadna dobre vychovaná opica neprijme dar od anonymného zdroja. Takže ako domácu úlohu pridajte ďalšie textové pole na zadanie mena používateľa, ktorý správu odosiela.

Google odporúča pre kľúče použiť nasledujúci formát: názov vášho balíka ako predponu, za ktorým nasleduje samotný kľúč. V tomto prípade si môžete byť istí jedinečnosťou kľúča pri interakcii s inými aplikáciami. Niečo také:

Verejný konečný statický reťazec USER = "ru.alexanderklimov.myapp.USER";

Kto zarámoval mačku Vasku - výsledok sa nám vráti

Nie vždy stačí len odovzdať dáta inej aktivite. Niekedy potrebujete získať informácie späť z inej aktivity, keď je zatvorená. Ak sme skôr použili metódu startActivity (zámer zámeru), potom je tu príbuzná metóda startActivityForResult(zámer zámeru, int kód požiadavky). Rozdiel medzi metódami je dodatočný parameter Vyžiadať kód. Je to v podstate len celé číslo, ktoré si môžete vymyslieť sami. Je to potrebné, aby bolo možné rozlíšiť, od koho výsledok prišiel. Povedzme, že máte päť ďalších obrazoviek a priradíte im hodnoty od 1 do 5 a pomocou tohto kódu môžete určiť, ktorého výsledok musíte spracovať. Môžete použiť hodnotu -1, potom to bude rovnaké ako pri volaní metódy startActivity(), t.j. nedosiahneme žiadne výsledky.

Ak použijete metódu startActivityForResult(), potom musíte prepísať metódu vo svojom kóde, aby ste získali výsledok onActivityResult() a spracovať výsledok. Zmätený? Pozrime sa na príklad.

Povedzme, že ste detektív. Prišla informácia, že zo stola vplyvnej osoby v reštaurácii boli odcudzené dva kusy klobásy a ďalšie produkty. Podozrenie padlo na troch podozrivých - vranu, zasraného psa a mačku Vasku.

Jeden z návštevníkov poskytol sériu fotografií zo svojho predvádzaného iPhonu:


Existuje aj výpoveď ďalšieho svedka: A Vaska počúva a je.

Vytvorte nový projekt Sherlock s dvoma aktivitami. Na prvej obrazovke bude tlačidlo na prepnutie na druhú obrazovku a textový štítok, v ktorom bude zobrazené meno zlodeja.


Hore