Android-program för att byta läge. Växla mellan appar i Android. Använd adb för att säkerhetskopiera programvara på din dator

Fliken Launcher, som öppnas från startskärmen, innehåller ikoner för alla program som är installerade på din telefon, inklusive program som laddats ner och installerats från Android marknad eller andra källor.

När du öppnar en app slutar inte andra appar som du använder, de fortsätter att köra, spela musik, visa webbsidor och mer. Du kan snabbt växla mellan appar för att fungera med flera appar samtidigt. Operations rum Android-system och applikationerna som körs på den kommunicerar så att oanvända applikationer inte förbrukar resurser. Applikationer stoppas och startas om vid behov. Därför finns det ingen anledning att stoppa applikationer om du inte är säker på att den nedladdade applikationen inte fungerar korrekt. Mer information om hur program använder minne och hur man hanterar dessa program finns i .

Lär dig hur du hittar och installerar ytterligare appar för din telefon (inklusive prestandaverktyg, verktyg, spel, referensmaterial och andra typer programvara) se i avsnittet.

Öppna och stänga Launchpad

Om du har fler appar öppna än vad som får plats i startprogrammet kan du rulla startprogrammet uppåt eller nedåt för att se alla appar.

Du kan lägga till en appikon på startskärmen genom att trycka och hålla ned ikonen på startprogrammet tills den vibrerar och sedan dra ikonen till önskad plats på startskärmen.

Launchpad stängs automatiskt när du trycker på en ikon för att öppna en app eller flyttar en ikon från Launchpad till startskärmen.

Öppnar en applikation

  • Klicka på programikonen i startpanelen.
  • Tryck på programikonen på hemskärmen.

Byt till en nyligen använd app

Ett litet fönster öppnas med ikoner för alla nyligen använda applikationer.

  • Tryck på en ikon för att öppna den tillhörande applikationen.

Eller klicka på knappen Tillbaka för att återgå till den aktuella applikationen.

Jag gör en applikation som måste kunna växla mellan applikationer som användaren har öppna (till exempel applikationer i multitasking-menyn), jag har ComponentName för 10 nya applikationer och kan starta dem (dvs. växla till dem) ) så här:

Intent = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(info); startActivity(avsikt);

Men när jag försöker ändra på Facebook (Och förmodligen några liknande appar), ber den om en specifik tillåtelse:

java.lang.securityException: Tillstånd förnekande: Start Intent (FLG = 0x10000000 cmp = com.facebook.katana/. Activity.FBFragmentChromeActivity) från ProcessRecord (42310bc0 8578: com.javanut13.multitaskhuvud/u0a10095) ) kräver com.facebook.permission.prod.FB_APP_COMMUNICATION

Finns det ett sätt att kringgå detta genom att faktiskt byta till appen istället för att starta den? Kan jag bara skicka fokus till en annan applikation?

0

1 svar

Om du inte har behörighet tror jag att du bara kan starta en annan applikations aktivitet när dess "export"-attribut är satt till true. En Facebook-liknande app kan ställa in detta på falskt och tillåter inte den andra appen åtkomst till dess aktivitet.

Jag har inte testat detta ensam, men du kan prova följande koder:

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

Hoppas det här hjälper.

En applikation består inte alltid av en skärm. Vi har till exempel skapat väldigt användbart program och användaren vill veta vem dess författare är. Han klickar på knappen "Om" och tas till ny skärm, där det finns användbar information om programversion, författare, webbadress, hur många katter författaren har osv. Se aktivitetsskärmen som en webbsida med en länk till en annan sida. Om du tittar på koden i filen MainActivity.java från tidigare lektioner kommer du att se att vår klass Huvudaktivitet gäller även Aktivitet(eller hans arvingar) eller, närmare bestämt, ärvt från honom.

Public class MainActivity utökar AppCompatActivity

Som du kanske gissar borde vi skapa en ny klass som kan likna den Huvudaktivitet och sedan på något sätt byta till det när knappen trycks in.

För experimentet kommer vi att ta programmet från den första lektionen och använda en knapp för experiment (eller skapa nytt projekt med en knapp på skärmen). Låt oss sedan skapa ett nytt formulär för att visa användbar information. Låt oss till exempel visa användaren vad en katt gör när den går åt vänster och höger. Håller med, detta är mycket viktig information som ger nyckeln till att nysta upp universum.

Vi kommer att skapa en ny aktivitet manuellt, även om studion har färdiga mallar. Men det är inget komplicerat där och för en bättre förståelse är det användbart att göra allt för hand.

Låt oss skapa en ny XML-uppmärkningsfil activity_about.xml i mappen res/layout. Högerklicka på mappen layout och välj från innehållsmeny Nytt | Layoutresursfil. En dialogruta visas. I det första fältet anger du filnamnet aktivitet_om. I det andra måste du ange rotelementet. Som standard finns den där Constraint Layout. Radera texten och skriv in ScrollView. Att ange några tecken räcker för att studion ska föreslå färdiga alternativ. Du kan omedelbart trycka på Enter utan att vänta på att hela ordet ska skrivas in:

Du kommer att få en motsvarande blankett som vi kommer att infoga elementet i TextView.

Information kommer att hämtas från resurser, nämligen strängresursen about_text. Nu är den markerad i rött, vilket signalerar frånvaron av information. Det gick att trycka på Alt+Enter och skriv in text i dialogrutan. Men för vårt exempel kommer den här metoden inte att fungera, eftersom vår text kommer att vara flerradig med kontrolltecken. Så låt oss göra det annorlunda. Låt oss öppna filen res/values/strings.xml och skriv in följande text manuellt:

Det finns en grön ek nära Lukomorye;\n En gyllene kedja på den eken:\n Både dag och natt vetenskapsman katt\nAllt går runt och runt i en kedja;\nDet går höger- låten börjar,\n Vänster– han berättar en saga.

Vi använde de enklaste HTML-textformateringstaggarna som , , . För vårt exempel räcker det att markera med fet stil de ord som relaterar till katten och rörelseriktningen. Använd symboler för att flytta text till en ny rad \n. Låt oss lägga till ytterligare en strängresurs för titeln på den nya skärmen:

Om programmet

Vi listade ut markeringarna. Därefter måste du skapa en klass för fönstret AboutActivity.java. Välj från menyn Arkiv | Nytt | Java klass och fyll i de obligatoriska fälten. Till en början räcker det att endast ange namnet. Sedan kommer du att ta itu med andra områden.

Låt oss ta det tomma.

Nu är klassen nästan tom. Låt oss lägga till koden manuellt. Klassen måste ärva från en abstrakt klass Aktivitet eller hans släktingar gillar FragmentActivity, AppCompatActivity etc. Låt oss lägga till utökar aktiviteten. Aktivitetsklassen måste ha en metod onCreate(). Placera muspekaren i klassen och välj från menyn Kod | Åsidosätt metoder(Ctrl+O). I dialogrutan letar vi efter den obligatoriska klassen du kan skriva in de första tecknen på tangentbordet för en snabb sökning. I den skapade metoden måste du anropa metoden setContentView(), som kommer att ladda den förberedda markeringen på skärmen. Vi kommer att ha det här alternativet.

Paket ru.alexanderklimov.helloworld; importera android.app.Activity; importera android.os.Bundle; /** * Skapad av Alexander Klimov den 12/01/2014. */ public class AboutActivity utökar aktivitet ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ) )

Nu kommer den viktigaste delen. Vår uppgift är att gå till en ny skärm när vi klickar på en knapp på den första skärmen. Låt oss gå tillbaka till klassen Huvudaktivitet. Låt oss skriva en knappklickshanterare:

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

Här använde jag bearbetningsmetoden för knappklick som beskrivs i lektionen.

För att starta en ny skärm måste du skapa en instans av klassen Avsikt och ange den aktuella klassen i den första parametern, och klassen att gå till i den andra, vi har detta Om Aktivitet. Efter detta kallas metoden startActivity(), som startar en ny skärm.

Om du nu försöker testa applikationen i emulatorn får du ett felmeddelande. Vad gjorde vi för fel? Vi missade ett viktigt steg. Du måste registrera en ny Aktivitet i manifestet AndroidManifest.xml. Hitta den här filen i ditt projekt och dubbelklicka på den. Fönstret för filredigering öppnas. Lägg till en ny tagg efter den avslutande taggen för den första aktiviteten. Skriv på egen hand och använd uppmaningarna aktivt. Du får följande:

Det är här strängresursen kommer väl till pass about_title. Vi startar applikationen, klickar på knappen och får upp ett fönster Om programmet. Således lärde vi oss hur man skapar ett nytt fönster och kallar det genom att klicka på en knapp. Och vi har ett megabekvämt program till vårt förfogande - nu kommer vi alltid att ha till hands en hint om vad katten gör när den går till vänster.

Återigen vill jag uppmärksamma er på att den andra aktivitetsklassen som skapas måste ärva från klassen Aktivitet eller liknande ( ListActivity etc.), har en XML-uppmärkningsfil (om så krävs) och anges i manifestet.

Efter att ha anropat metoden startActivity() en ny aktivitet kommer att lanseras (i detta fall Om Aktivitet), kommer den att bli synlig och flytta till toppen av stapeln som innehåller de löpande komponenterna. När du anropar en metod Avsluta() från en ny aktivitet (eller när hårdvarans returknapp trycks ned) kommer den att stängas och tas bort från stacken. Utvecklaren kan också navigera till föregående (eller någon annan) aktivitet med samma metod startActivity().

Skapa en tredje skärm - en metod för lata

Programmerare, som katter, är lata varelser. Kom alltid ihåg att för en aktivitet måste du skapa uppmärkning och en klass som ärver från Aktivitet, och glöm sedan inte att registrera klassen i manifestet - jaha.

I det här fallet väljer du från menyn Arkiv | Nytt | Aktivitet | Grundläggande aktivitet(eller annan mall). Därefter visas det välbekanta fönstret för att skapa en ny aktivitet. Fyll i de obligatoriska fälten.

Klicka på knappen Avsluta och aktiviteten kommer att vara klar. För att verifiera detta, öppna manifestfilen och leta efter en ny post. Jag pratar inte ens om klass- och uppmärkningsfiler, de kommer att dyka upp framför dig på egen hand.

Lägg till en ny knapp på huvudaktivitetsskärmen själv och skriv kod för att byta till den skapade aktiviteten.

Först skulle jag råda dig att manuellt skapa alla nödvändiga komponenter för den nya aktiviteten så att du förstår förhållandet mellan klassen, markeringen och manifestet. Och när du får kläm på det kan du använda guiden för att skapa aktiviteter för att påskynda ditt arbete.

Skicka data mellan aktiviteter

Vi använde ett enkelt exempel för att kalla en annan aktivitetsskärm. Ibland behöver du inte bara ringa en ny skärm utan också överföra data till den. Till exempel användarnamn. I det här fallet måste du använda ett speciellt område extraData, som klassen har Avsikt.

Område extraDataär en lista över par nyckelvärde, som sänds tillsammans med avsikten. Strängar används som nycklar, och alla primitiva datatyper, arrayer av primitiver, klassobjekt kan användas för värden Bunt och så vidare.

För att överföra data till en annan aktivitet, använd metoden putExtra():

Intent.putExtra("Nyckel", "Värde");

Den mottagande aktiviteten måste anropa någon lämplig metod: getIntExtra(), getStringExtra() etc.:

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

Låt oss göra om det föregående exemplet. Vi har redan tre aktiviteter. Den första aktiviteten kommer att ha två textfält och en knapp. Utseende kan vara följande:

Vid den andra aktiviteten SecondActivity ställ in elementet TextView, där vi kommer att visa texten från den första aktiviteten. Låt oss skriva följande kod för metoden onCreate() vid den andra aktiviteten.

@Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); String user = "Animal"; String present = "munkhål"; TextView infoTextView = (TextView)find(RViewById) .id.textViewInfo infoTextView.setText(användare + ", du fick " + gåva);

Om vi ​​nu kör programmet och bara kallar upp det andra fönstret, som beskrevs i den första delen av artikeln, kommer vi att se standardinskriften Djur, de gav dig ett munkhål. Håller med, det är ganska irriterande att få sådana meddelanden.

Låt oss rätta till situationen. Lägg till koden till den första aktiviteten:

Public void onClick(View view) ( EditText userEditText = (EditText) findViewById(R.id.editTextUser); EditText giftEditText = (EditText) findViewById(R.id.editTextGift); Intent avsikt.SecondActivt.Max class); // tryck in texten från det första textfältet till användarnamnsnyckeln intent.putExtra("användarnamn", userEditText.getText().toString() // tryck in texten från det andra textfältet intent.putExtra("gåva" ", giftEditText.getText().toString()); startActivity(avsikt); )

Vi placerade föremålet i en speciell behållare Avsikt två nycklar med värden som är hämtade från textfält. När användaren anger data i textfälten kommer den att gå in i denna behållare och skickas till den andra aktiviteten.

Den andra aktiviteten ska vara redo att varmt ta emot meddelanden enligt följande (i fetstil).

// Standardvärden String user = "Djur"; String present = "munkhål"; user = getIntent().getExtras().getString("användarnamn"); gift = getIntent().getExtras().getString("gift"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(användare + " , du fick " + gåva);

Nu ser budskapet mindre stötande ut, och till och med trevligt för vissa. I komplexa exempel är det lämpligt att lägga till en kontroll vid bearbetning av data. Det kan finnas situationer där du startar en andra aktivitet med tomma data av typen null, vilket kan få programmet att krascha.

I vårt fall vet vi att vi förväntar oss ett strängvärde, så koden kan skrivas om så här:

Intent intent = getIntent(); user = intent.getStringExtra("användarnamn");

User = getIntent().getStringExtra("användarnamn");

Programmet har en nackdel - det framgår inte från vem vi får hälsningar. En väluppfostrad apa kommer inte att acceptera en gåva från en anonym källa. Så som läxa, lägg till ett annat textfält för att ange namnet på användaren som skickar meddelandet.

Google rekommenderar att du använder följande format för nycklar: ditt paketnamn som ett prefix, följt av själva nyckeln. I det här fallet kan du vara säker på att nyckeln är unik när du interagerar med andra applikationer. Något som det här:

Public final static String USER = "ru.alexanderklimov.myapp.USER";

Vem ramade in katten Vaska – vi får tillbaka resultatet

Det räcker inte alltid att bara skicka data till en annan aktivitet. Ibland behöver man få tillbaka information från en annan aktivitet när den är stängd. Om vi ​​tidigare använde metoden startActivity(Intent intent), så finns det en relaterad metod startActivityForResult(Intent intent, int RequestCode). Skillnaden mellan metoderna är ytterligare parameter Begär kod. Det är i princip bara ett heltal som du kan komma på själv. Det behövs för att kunna skilja från vem resultatet kom. Låt oss säga att du har fem extra skärmar och du tilldelar dem värden från 1 till 5, och med den här koden kan du bestämma vems resultat du behöver bearbeta. Du kan använda värdet -1, då blir det samma sak som att anropa metoden startActivity(), dvs. vi får inga resultat.

Om du använder metoden startActivityForResult(), då måste du åsidosätta metoden i din kod för att få resultatet onActivityResult() och bearbeta resultatet. Förvirrad? Låt oss titta på ett exempel.

Låt oss säga att du är en detektiv. Information inkom om att två korvbitar och andra produkter stals från bordet hos en inflytelserik person på en restaurang. Misstanke föll på tre misstänkta - en kråka, en jävla hund och katten Vaska.

En av besökarna gav en serie bilder från sin iPhone:


Det finns också vittnesmål från ett annat vittne: Och Vaska lyssnar och äter.

Skapa ett nytt projekt Sherlock med två aktiviteter. På den första skärmen kommer det att finnas en knapp för att växla till den andra skärmen och en textetikett där tjuvens namn kommer att visas.


Topp