Program Android pentru a comuta între moduri. Comutarea între aplicații în Android. Utilizați adb pentru a face backup pe computerul dvs
Fila Lansator, care se deschide din ecranul de pornire, conține pictograme pentru toate aplicațiile instalate pe telefon, inclusiv aplicațiile descărcate și instalate de pe Android Market sau alte surse.
Când deschideți o aplicație, alte aplicații pe care le utilizați nu se opresc; ele continuă să ruleze, să redă muzică, să afișeze pagini web și multe altele. Puteți comuta rapid între aplicații pentru a funcționa cu mai multe aplicații simultan. sala de operatie sistem Android iar aplicațiile care rulează pe el comunică astfel încât aplicațiile neutilizate să nu consume resurse. Aplicațiile sunt oprite și repornite atunci când este necesar. Prin urmare, nu există niciun motiv pentru a opri aplicațiile decât dacă sunteți sigur că aplicația descărcată nu funcționează corect. Pentru detalii despre modul în care aplicațiile utilizează memoria și despre cum să gestionați aceste aplicații, consultați .
Aflați despre găsirea și instalarea de aplicații suplimentare pentru telefonul dvs. (inclusiv instrumente de performanță, utilitati, jocuri, materiale de referință și alte tipuri software) vezi sectiunea.
Deschiderea și închiderea Launchpad
Dacă aveți mai multe aplicații deschise decât pot încăpea pe lansator, puteți derula lansatorul în sus sau în jos pentru a vedea toate aplicațiile.
Puteți adăuga o pictogramă de aplicație pe ecranul de pornire apăsând și menținând apăsată pictograma de pe Lansatorul până când vibrează, apoi trăgând pictograma în locația dorită de pe ecranul de pornire.
Launchpad se închide automat când atingeți o pictogramă pentru a deschide o aplicație sau mutați o pictogramă din Launchpad pe ecranul de pornire.
Deschiderea unei aplicații
- Faceți clic pe pictograma aplicației din panoul Lansator.
- Atingeți pictograma aplicației de pe ecranul de start.
Comutați la o aplicație utilizată recent
Se va deschide o fereastră mică care conține pictogramele tuturor aplicațiilor utilizate recent.
- Atingeți o pictogramă pentru a deschide aplicația asociată acesteia.
Sau faceți clic pe butonul Înapoi pentru a reveni la aplicația curentă.
Creez o aplicație care trebuie să poată comuta între aplicațiile pe care utilizatorul le are deschise (de exemplu, aplicații din meniul multitasking), am ComponentName a 10 aplicații noi și le pot porni (adică, comuta la ele). ) ca aceasta:
Intenție = new Intent(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(info); startActivity(intentie);
Cu toate acestea, când încerc să schimb pe Facebook (și probabil unele aplicații similare), îmi cere o permisiune specifică:
java.lang.SecurityException: Respingerea permisiunii: intenția de pornire ( flg=0x10000000 cmp=com.facebook.katana/.activity.FbFragmentChromeActivity ) din ProcessRecord(42310bc0 8578:com.javanut13.multitaskheads=u951000/u9510000/u9570000000000000) ) cere com.facebook.permission.prod.FB_APP_COMMUNICATION
Există o modalitate de a evita acest lucru prin trecerea efectivă la aplicație în loc să o porniți? Pot să trimit focalizarea către o altă aplicație?
01 raspunsuri
Dacă nu aveți permisiunea, cred că puteți începe activitatea unei alte aplicații numai atunci când atributul „export” este setat la adevărat. O aplicație asemănătoare Facebook ar putea seta acest lucru la fals și nu permite accesul celeilalte aplicații la activitatea sa.
Nu l-am testat singur, dar puteți încerca următoarele coduri:
Intent extApp= getPackageManager().getLaunchIntentForPackage(facebook-package-name); this.startActivity(extApp);
Sper că acest lucru vă ajută.
O aplicație nu constă întotdeauna dintr-un singur ecran. De exemplu, am creat foarte program util iar utilizatorul dorește să știe cine este autorul său. Face clic pe butonul „Despre” și este dus la ecran nou, unde există informații utile despre versiunea programului, autor, adresa site-ului web, câte pisici are autorul etc. Gândiți-vă la ecranul de activitate ca la o pagină web cu un link către o altă pagină. Dacă te uiți la codul din fișier MainActivity.java din lecțiile anterioare, veți vedea că clasa noastră Activitate principala se aplică și la Activitate(sau moștenitorii săi) sau, mai precis, moștenit de la el.
Clasa publică MainActivity extinde AppCompatActivity
După cum ați putea ghici, ar trebui să creăm o nouă clasă care ar putea fi similară cu Activitate principalași apoi cumva comutați la el când se apasă butonul.
Pentru experiment, vom lua programul din prima lecție și vom folosi un buton pentru experimente (sau pentru a crea proiect nou cu un singur buton pe ecran). Apoi, să creăm un formular nou pentru a afișa informații utile. De exemplu, să arătăm utilizatorului ce face o pisică când merge în stânga și în dreapta. De acord, aceasta este o informație foarte importantă care oferă cheia dezvăluirii Universului.
Vom crea o activitate nouă manual, deși studioul are șabloane gata făcute. Dar nu este nimic complicat acolo și pentru o mai bună înțelegere este util să faci totul manual.
Să creăm un nou fișier de marcare XML activity_about.xmlîn dosar res/aspect. Faceți clic dreapta pe folder aspectși selectați din meniul contextual Nou | Fișier cu resurse de aspect. Va apărea o casetă de dialog. În primul câmp, introduceți numele fișierului activitate_despre. În al doilea, trebuie să introduceți elementul rădăcină. Implicit este acolo ConstraintLayout. Ștergeți textul și introduceți ScrollView. Introducerea câtorva caractere este suficientă pentru ca studioul să sugereze opțiuni gata făcute; puteți apăsa imediat Enter fără a aștepta introducerea întregului cuvânt:
Veți obține un spațiu liber corespunzător în care vom introduce elementul TextView.
Informațiile vor fi preluate din resurse, și anume resursa șir despre_text. Acum este evidențiat cu roșu, semnalând absența informațiilor. S-a putut apăsa Alt+Enterși introduceți text în caseta de dialog. Dar, pentru exemplul nostru, această metodă nu va funcționa, deoarece textul nostru va fi pe mai multe linii, folosind caractere de control. Deci hai să o facem altfel. Să deschidem fișierul res/values/strings.xmlși introduceți manual următorul text:
Am folosit cele mai simple etichete de formatare a textului HTML, cum ar fi , , . Pentru exemplul nostru, este suficient să evidențiem cu aldine cuvintele care se referă la pisică și direcția de mișcare. Pentru a muta textul pe o linie nouă, utilizați simboluri \n. Să adăugăm o altă resursă șir pentru titlul noului ecran:
Ne-am dat seama de marcajele. Apoi, trebuie să creați o clasă pentru fereastră DespreActivity.java. Selectați din meniu Fișier | Nou | Clasa Javași completați câmpurile obligatorii. La început, este suficient să indicați doar numele. Apoi te vei ocupa de alte domenii.
Să luăm golul.
Acum clasa este aproape goală. Să adăugăm manual codul. Clasa trebuie să moștenească dintr-o clasă abstractă Activitate sau rudele lui ca FragmentActivity, AppCompatActivity etc. Să adăugăm extinde Activitatea. Clasa de activitate trebuie să aibă o metodă onCreate(). Plasați cursorul mouse-ului în interiorul clasei și selectați din meniu Cod | Metode de anulare(Ctrl+O). În caseta de dialog căutăm clasa necesară; puteți introduce primele caractere pe tastatură pentru o căutare rapidă. În metoda creată trebuie să apelați metoda setContentView(), care va încărca pe ecran marcajul pregătit. Vom avea această opțiune.
Pachetul ru.alexanderklimov.helloworld; import android.app.Activity; import android.os.Bundle; /** * Creat de Alexander Klimov la 12.01.2014. */ clasă publică AboutActivity extinde Activitatea ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ) )
Acum vine partea cea mai importantă. Sarcina noastră este să mergem la un nou ecran atunci când facem clic pe un buton de pe primul ecran. Să ne întoarcem la clasă Activitate principala. Să scriem un handler de clic pe buton:
Public void onClick (Vizualizare vizualizare) ( Intenție de intenție = intenție nouă (MainActivity.this, AboutActivity.class); startActivity(intent); )
Aici am folosit metoda de procesare a clicurilor pe buton descrisă în lecție.
Pentru a lansa un nou ecran, trebuie să creați o instanță a clasei Intențieși indicați clasa curentă în primul parametru și clasa la care să mergeți în al doilea, avem aceasta DespreActivitate. După aceasta, metoda este numită startActivity(), care lansează un nou ecran.
Dacă acum încercați să testați aplicația în emulator, veți primi un mesaj de eroare. Ce am greșit? Am ratat un pas important. Trebuie să înregistrați unul nou Activitateîn manifest AndroidManifest.xml. Găsiți acest fișier în proiectul dvs. și faceți dublu clic pe el. Se va deschide fereastra de editare a fișierului. Adăugați o nouă etichetă
Aici este utilă resursa șir despre_titlu. Lansăm aplicația, facem clic pe buton și obținem o fereastră Despre program. Astfel, am învățat cum să creăm o fereastră nouă și să o apelăm făcând clic pe un buton. Și avem la dispoziție un program mega-convenient - acum vom avea mereu la îndemână un indiciu despre ce face pisica când merge la stânga.
Încă o dată, rețineți că a doua clasă de activitate creată trebuie să moștenească din clasă Activitate sau altele similare ( ListActivity etc.), să aibă un fișier de markup XML (dacă este necesar) și să fie specificat în manifest.
După apelarea metodei startActivity() va fi lansată o nouă activitate (în acest caz DespreActivitate), va deveni vizibil și se va muta în partea de sus a stivei care conține componentele care rulează. La apelarea unei metode finalizarea() dintr-o activitate nouă (sau atunci când tasta de revenire hardware este apăsată) va fi închis și scos din stivă. Dezvoltatorul poate naviga și la activitatea anterioară (sau la orice altă activitate) folosind aceeași metodă startActivity().
Crearea unui al treilea ecran - o metodă pentru leneși
Programatorii, ca și pisicile, sunt creaturi leneșe. Amintiți-vă întotdeauna că pentru o activitate trebuie să creați un marcaj și o clasă de la care moștenește Activitate, și apoi nu uitați să înregistrați clasa în manifest - ei bine.
În acest caz, selectați din meniu Fișier | Nou | Activitate | Activitate de bază(sau alt șablon). În continuare, va apărea fereastra familiară pentru crearea unei noi activități. Completați câmpurile obligatorii.
Faceți clic pe butonul finalizarea iar activitatea va fi gata. Pentru a verifica acest lucru, deschideți fișierul manifest și verificați dacă există o nouă intrare. Nici măcar nu vorbesc despre fișierele de clasă și de marcare, acestea vor apărea singure în fața ta.
Adăugați un buton nou pe ecranul principal de activitate și scrieți codul pentru a comuta la activitatea creată.
La început, v-aș sfătui să creați manual toate componentele necesare pentru noua activitate, astfel încât să înțelegeți relația dintre clasă, markup și manifest. Și când înțelegi, poți folosi Expertul de creare a activității pentru a-ți accelera munca.
Transmiterea datelor între activități
Am folosit un exemplu simplu pentru a apela un alt ecran de activitate. Uneori nu trebuie doar să apelați un nou ecran, ci și să transferați date pe acesta. De exemplu, numele de utilizator. În acest caz, trebuie să utilizați o zonă specială extraData, pe care o are clasa Intenție.
Regiune extraData este o listă de perechi valoare cheie, care se transmite odata cu intentia. Șirurile sunt folosite ca chei și orice tipuri de date primitive, matrice de primitive, obiecte de clasă pot fi folosite pentru valori Pachet si etc.
Pentru a transfera date către o altă activitate, utilizați metoda puneExtra():
Intent.putExtra ("Cheie", "Valoare");
Activitatea de recepție trebuie să apeleze la o metodă adecvată: getIntExtra(), getStringExtra() etc.:
Int count = getIntent().getIntExtra("nume", 0);
Să refacem exemplul anterior. Avem deja trei activități. Prima activitate va avea două câmpuri de text și un buton. Aspect ar putea fi după cum urmează:
La a doua activitate A doua activitate setați elementul TextView, în care vom afișa textul primit de la prima activitate. Să scriem următorul cod pentru metodă onCreate() la a doua activitate.
@Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); String user = „Animal”; String gift = „goașă”; TextView infoTextView = (TextView)findViewBy(R) .id.textViewInfo); infoTextView.setText(utilizator + " , vi s-a oferit " + cadou); )
Dacă acum rulăm programul și pur și simplu deschidem a doua fereastră, așa cum a fost descris în prima parte a articolului, atunci vom vedea inscripția implicită Animal, ți-au dat o gaură pentru gogoși. De acord, este destul de enervant să primești astfel de mesaje.
Să corectăm situația. Adăugați codul la prima activitate:
Public void onClick (Vizualizare vizualizare) ( EditText userEditText = (EditText) findViewById(R.id.editTextUser); EditText giftEditText = (EditText) findViewById(R.id.editTextGift); Intent = new Intent(s, MainActivity.this). class); // în cheia numelui de utilizator împingem textul din primul câmp de text intent.putExtra("nume utilizator", userEditText.getText().toString()); // în cheia cadou împingem textul din al doilea câmp text intent.putExtra(„cadou”, giftEditText.getText().toString()); startActivity(intent); )
Am așezat obiectul într-un recipient special Intenție două chei cu valori care sunt preluate din câmpurile de text. Când utilizatorul introduce date în câmpurile de text, acestea vor intra în acest container și vor fi trecute la a doua activitate.
A doua activitate ar trebui să fie pregătită pentru a primi mesaje cu căldură, după cum urmează (în aldine).
// Valori implicite String user = "Animal"; String gift = „găuri pentru gogoși”; utilizator = getIntent().getExtras().getString(„nume utilizator”); cadou = getIntent().getExtras().getString("cadou"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(user + " , vi s-a oferit " + cadou);
Acum mesajul pare mai puțin ofensator și chiar plăcut pentru unii. În exemplele complexe, este recomandabil să adăugați o verificare la prelucrarea datelor. Pot exista situații în care lansați o a doua activitate cu date goale de tip nul, ceea ce poate cauza blocarea aplicației.
În cazul nostru, știm că ne așteptăm la o valoare șir, așa că codul poate fi rescris astfel:
Intenție de intenție = getIntent(); utilizator = intent.getStringExtra ("nume utilizator");
Utilizator = getIntent().getStringExtra("nume utilizator");
Programul are un dezavantaj - nu este clar de la cine primim salutări. Orice maimuță bine crescută nu va accepta un cadou dintr-o sursă anonimă. Deci, ca teme, adăugați un alt câmp de text pentru a introduce numele utilizatorului care trimite mesajul.
Google recomandă utilizarea următorului format pentru chei: numele pachetului dvs. ca prefix, urmat de cheia însăși. În acest caz, puteți fi sigur de unicitatea cheii atunci când interacționați cu alte aplicații. Ceva de genul:
Public final static String USER = "ru.alexanderklimov.myapp.USER";
Cine a înrămat pisica Vaska - obținem rezultatul înapoi
Nu este întotdeauna suficient să transmiteți pur și simplu date unei alte activități. Uneori, atunci când este închisă, trebuie să obțineți informații din altă activitate. Dacă mai devreme am folosit metoda startActivity (intenție de intenție), atunci există o metodă înrudită startActivityForResult(intenție de intenție, int RequestCode). Diferența dintre metode este parametru suplimentar RequestCode. Practic, este doar un număr întreg pe care îl poți găsi singur. Este necesar pentru a distinge de la cine a venit rezultatul. Să presupunem că aveți cinci ecrane suplimentare și le atribuiți valori de la 1 la 5, iar folosind acest cod puteți determina al cui rezultat trebuie să procesați. Puteți utiliza valoarea -1, atunci va fi la fel cu apelarea metodei startActivity(), adică nu vom obține niciun rezultat.
Dacă utilizați metoda startActivityForResult(), atunci trebuie să înlocuiți metoda din codul dvs. pentru a primi rezultatul onActivityResult()și procesează rezultatul. Confuz? Să ne uităm la un exemplu.
Să presupunem că ești detectiv. S-au primit informații că două bucăți de cârnați și alte produse au fost furate de pe masa unei persoane influente dintr-un restaurant. Suspiciunea a căzut asupra a trei suspecți - o cioară, un nenorocit de câine și pisica Vaska.
Unul dintre vizitatori a oferit o serie de fotografii de pe iPhone-ul său de prezentare:
Există și mărturie de la un alt martor: Iar Vaska ascultă și mănâncă.
Creați un nou proiect Sherlock cu două activități. Pe primul ecran va exista un buton pentru a trece la al doilea ecran și o etichetă text în care va fi afișat numele hoțului.
Pe al doilea ecran va apărea un grup de comutatoare:
Deoarece ne vom aștepta la un răspuns de la al doilea ecran, trebuie să folosim metoda startActivityForResult() pe primul ecran în care vom trece variabila ALEGE_HOȚUL ca parametru RequestCode.
Static final privat int CHOOSE_THIEF = 0; public void onClick(View v) ( Intenție questionIntent = new Intent(MainActivity.this, ChooseActivity.class); startActivityForResult(questionIntent, CHOOSE_THIEF); )
Uită-te la cod. Când facem clic pe butonul vom lucra cu al doilea ecran Alegeți Activitateși lansați al doilea ecran în așteptarea rezultatului.
Să mergem la al doilea ecran și să scriem codul pentru a doua activitate.
Public final static String THIEF = "ru.alexanderklimov.sherlock.THIEF"; public void onRadioClick(Vizualizare v) ( Intenție answerIntent = new Intent(); comutați (v.getId()) (case R.id.radioDog: answerIntent.putExtra(THIEF, „La naiba de câine”); break; case R.id .radioCrow: answerIntent.putExtra(THIEF, „Crow”); break; case R.id.radioCat: answerIntent.putExtra(THIEF, „Calul lui Przewalski”); break; default: break; ) setResult(RESULT_OK, answerIntent); finish; (); )
Totul este simplu aici, când detectivul alege numele criminalului, apoi prin metoda puneExtra() trecem numele cheii și valoarea acesteia.
Pentru comoditate, după selectare, închidem imediat a doua fereastră și înainte de a închide trecem valoarea RESULT_OK, astfel încât să fie clar că alegerea a fost făcută. Dacă utilizatorul închide ecranul prin butonul Înapoi, valoarea va fi transmisă RESULT_CANCELED.
Metodă setResult() ia doi parametri: codul rezultat și rezultatul însuși, reprezentat ca o intenție. Codul rezultat vă spune care a fost rezultatul activității, de regulă, acesta este fie Activitate.RESULT_OK, sau Activitate.RESULT_CANCELED. În unele cazuri, trebuie să utilizați propriul cod de returnare pentru a gestiona variațiile specifice aplicației dvs. Metodă setResult() acceptă orice valoare întreagă.
Dacă veți transmite date în mod explicit printr-un buton, atunci ar fi o idee bună să adăugați o metodă finalizarea() pentru a închide a doua activitate ca fiind inutilă. Dacă tranziția are loc prin butonul Înapoi, atunci acest lucru nu este necesar.
Dacă activitatea a fost închisă de utilizator prin apăsarea butonului de revenire hardware sau dacă metoda finalizarea() a fost numit înainte de metodă setResult(), codul rezultat va fi setat la RESULT_CANCELED, iar intenția returnată va afișa valoarea nul.
Revenim la primul ecran. Primul ecran așteaptă un răspuns de la al doilea ecran, așa că trebuie să adăugați o metodă la cod onActivityResult().
@Override protected void onActivityResult(int requestCode, int resultCode, date Intent) ( super.onActivityResult(requestCode, resultCode, date); TextView infoTextView = (TextView) findViewById(R.id.textViewInfo); if (requestCode == CHOOSE_THIEF) if (resultCode == RESULT_OK) ( String thiefname = data.getStringExtra(ChooseActivity.THIEF); infoTextView.setText(thiefname); )else ( infoTextView.setText(""); // șterge textul ) ) )
Metoda așteaptă date primite cu cod ALEGE_HOȚUL, iar dacă astfel de date ajung, preia valoarea de la cheie AlegeActivity.THIEF folosind metoda getStringExtra. Afișăm valoarea rezultată în TextView(variabil infoTextView). Dacă ne-am întors la ecran prin butonul Înapoi, atunci pur și simplu ștergem textul.
Când o activitate copil este închisă în interiorul componentei părinte, este declanșat un handler onActivityResult(). Handler onActivityResult() acceptă mai mulți parametri.
- Solicitați codul. Cod folosit pentru a începe activitatea care returnează rezultatul
- Codul rezultat. Un cod de rezultat stabilit de activitatea copilului care indică modul în care s-a finalizat activitatea sa. Aceasta poate fi orice valoare întreagă, dar de obicei oricare Activitate.RESULT_OK, sau Activitate.RESULT_CANCELED
- Date. Intenția utilizată pentru a împacheta datele returnate. În funcție de scopul activității copilului, aceasta poate include o cale URI care reprezintă piesa de conținut selectată. Alternativ (sau complementar), activitatea copilului poate returna informații sub formă de valori simple împachetate într-un parametru de intenție in plus
Dacă o activitate de copil sa încheiat în mod neașteptat sau dacă nu a fost specificat niciun cod de rezultat înainte de a o închide, acest parametru va deveni Activitate.RESULT_CANCELED.
Lansăm proiectul, facem clic pe butonul și mergem la al doilea ecran. Acolo selectăm una dintre opțiuni. Dacă selectezi cioara, ecranul se va închide și numele criminalului va apărea pe primul ecran. Dacă selectați un câine, numele acestuia va fi afișat.
Apropo, dacă selectați o pisică, numele acesteia nu va fi afișat! Verificați-l și vedeți singur. Vei întreba de ce? Primar Watson! Infractorul nu a ținut cont de un detaliu important. Restaurantul era supravegheat de camere video, iar înregistrarea arăta cine a furat de fapt cârnatul și a înrămat pisica. Vaska, stai!
P.S. Dacă la început ceva părea neclar, atunci cu practică multe vor deveni mai clare. Transferul de date între ecrane este obișnuit în aplicații și veți studia exemplul de mai multe ori.
P.P.S. Cel mai bun pește este cârnații. Cunoscând această slăbiciune, nu a fost greu să încadrezi pisica.
Folosind filtre
În articol am arătat o modalitate obișnuită de a trece la o altă activitate când sunteți în metodă startActivity() sunt indicate clasa curentă și clasa de transferat. Apropo, clasa de activitate nu trebuie să facă parte din aplicația dvs. Dacă știți numele clasei dintr-o altă aplicație, puteți trece la el. Dar poți trece la o altă activitate în alt mod.
În practică este mai puțin obișnuit, dar poate fi util. Să presupunem că aveți deja o a doua activitate. În manifest îi vom adăuga un filtru special:
Și lansăm a doua activitate făcând clic pe un buton în acest fel.
Public void onClick (Vizualizare vizualizare) ( startActivity(new Intent("ru.alexanderklimov.testapplication.SecondActivity")); )
Să înlocuim șirul lung cu o constantă.
Public static final String ACTION_SECOND_ACTIVITY = "ru.alexanderklimov.testapplication.SecondActivity"; public void onClick (Vizualizare vizualizare) ( startActivity(new Intent(ACTION_SECOND_ACTIVITY)); )
Deci ce am făcut. Pentru a doua activitate, am înregistrat un filtru și am specificat un nume pentru acțiuneîn atribut android:nume. Pentru comoditate, am pus doar numele complet al activității cu numele pachetului în ea. Constructor de clasă Intenție are mai multe versiuni supraîncărcate. Într-o versiune, puteți specifica un șir pentru acțiune. Am indicat acțiunea noastră creată, care este înregistrată în a doua activitate. În timpul funcționării, sistemul vizualizează manifestele tuturor aplicațiilor instalate. Când caută o potrivire, sistemul găsește filtrul nostru și lansează activitatea necesară.
Puteți lansa alte activități folosind același principiu. Uita-te la exemplu. Dacă copiați exemplul pentru dvs. și vă uitați la documentația pentru android.provider.Settings.ACTION_AIRPLANE_MODE_SETTINGS, veți vedea că acest cod corespunde unei constante șir public static final java.lang.String ACTION_AIRPLANE_MODE_SETTINGS = „android.settings.AIRPLANE_MODE_SETTINGS”. Comparați cu codul nostru. Puteți presupune că activitatea de setări pentru modul offline are această linie în filtrul său.
Filtrați numele categoriei android.intent.category.DEFAULT spune sistemului să efectueze acțiunea implicită, care este să înceapă activitatea. Mai sunt si alte nume care nu ne intereseaza inca.
Și acum o ultimă întrebare. Ce se întâmplă dacă creați o altă activitate și specificați același filtru ca a doua activitate? Hai să verificăm. Creați o a treia activitate și copiați blocul cu filtrul din a doua activitate în el.
Faceți clic pe butonul din prima activitate. Sistemul vă va cere să selectați opțiunea dorită.
Dacă selectați MEREU, apoi data viitoare nu va trebui să alegeți. Pentru a reseta selecția, accesați proprietățile aplicației din Setări și găsiți butonul Ștergeți setările implicite.
Interfețele multitasking și interacțiunea cu acestea au fost întotdeauna unul dintre punctele slabe ale sistemului de operare Android, cel puțin pentru mine personal. Fie cei de la Google pur și simplu nu vor să facă o schimbare bună de sarcină și încearcă să meargă pe drumul lor, fie pur și simplu interfețe bune protejate prin brevete. Oricum sistem de operare Android a devenit popular deoarece interfața sa poate fi schimbată cu ușurință. De exemplu, Recent facilitează lucrul cu sarcinile utilizate frecvent. Citiți recenzia completă sub tăietură.
Înainte de apariția Pintasking, aplicația avea deja mai mulți analogi, de exemplu și. Dar toate erau imperfecte într-o măsură sau alta. Noua dezvoltare de la studioul PhinxApps oferă o modalitate convenabilă de a comuta între sarcinile „fierbinte” și chiar adaugă un gest interesant, care este analog cu ALT + Tab pe computerele Windows.
Cum functioneazã
Funcția principală a aplicației Pintasking este de a afișa pictograme de aplicație suplimentare pe partea laterală a afișajului. Acestea apar deasupra oricărei aplicații, astfel încât să puteți atinge pictogramele pentru a comuta între sarcinile conexe sau pur și simplu pentru a lansa programe. În acest caz, pictogramele aplicațiilor pot fi lăsate pe ecran pentru totdeauna, dar în mod implicit dispar după ce dispozitivul intră în modul de repaus. Adăuga pictogramă nouă Puteți face acest lucru prin bara de sus, unde este întotdeauna afișată o notificare din aplicația Pintasking. Trebuie doar să atingeți el și aplicația deschisă în prezent va fi adăugată în bara laterală comutare rapidă sarcini.
Dacă sunteți enervat de notificarea suspendată constant, atunci o puteți elimina - doar dezactivați accesul Pintasking la notificări în managerul de aplicații. Pictogramele din bară sunt destul de inteligente, de exemplu: după ce lansați browserul, pictograma acestuia din bară va dispărea și în locul ei va apărea o pictogramă de comutare a activității, care vă va întoarce la aplicația anterioară.
Apăsarea lungă a pictogramelor vă permite să mergeți rapid la setările Pintasking sau să eliminați pictograma din bară.
Gesturi
Gesturile de glisare convenabile sunt una dintre principalele caracteristici ale aplicației Pintasking. Setările programului sugerează activarea a două gesturi: glisați în sus de pe butonul Acasă (înlocuind apelul Google Now) și glisați în jos din partea stângă a panoului barei de notificări. Personal, nu folosesc deloc asistentul personal Google, așa că înlocuirea gestului de pe butonul Acasă a fost ușor pentru mine. Gestul comută între sarcinile curente și anterioare, ceea ce este destul de convenabil. Ca utilizator al unui smartphone BlackBerry, unde gestul de jos în sus este sistemic, mi-au plăcut capacitățile Pintasking în acest sens.Gestul de comutare a sarcinii nu este foarte rapid, deoarece afișează meniul de sarcini și comută automat la aplicația potrivită, dar salvează totuși o atingere.
Animație GIF la clic (mult trafic!)
Pintasking-ul este plin de setări interesante și posibilități ascunse. De exemplu, pe dispozitivele cu este posibilă eliminarea întârzierii la schimbarea sarcinilor. De asemenea, puteți ajusta dimensiunea și poziția pictogramelor din bara laterală, puteți activa sau dezactiva gesturile, crește sau reduce viteza animațiilor. Și majoritatea acestor funcții sunt disponibile numai în versiunea plătită a aplicației. Creatorii lui Pintasking au limitat pe cât posibil funcționalitatea aplicație gratuită. În el, utilizatorii pot fixa doar două pictograme fără setări. Întregul potențial al aplicației este dezvăluit doar în versiunea plătită.
Pintasking-ul va atrage cu siguranță cei care folosesc un set mic de programe și adesea comută între ele. Deși vanilla Android nu a introdus încă funcționalitatea cu mai multe ferestre cu drepturi depline, Pintasking poate fi util în utilizarea de zi cu zi. Puteți descărca aplicația Pintasking pentru Android pe Trashbox.
În patru ani, dintr-un mic, dar ambițios Proiect Android s-a transformat probabil în cel mai complex și mai plin de funcționalități de operare mobilă din timpul nostru. Android acceptă un număr mare de tehnologii și funcții, dintre care multe sunt ascunse de utilizator sau ascunse în locuri la care nici nu te-ai gândi să te uiți. Acest articol este o colecție de sfaturi și trucuri care pot fi aplicate pe orice dispozitiv Android fără a fi nevoie de root.
01. DEZACTIVAȚI CREAREA AUTOMATĂ DE ICOTOARE PE DESKTOP
Cred că nu sunt singurul care este enervat de felul în care se comportă piața atunci când instalează o aplicație. Dintr-un motiv oarecare crede că pentru orice software mai mult sau mai puțin sau pentru următorul joc am neapărat nevoie de o pictogramă pe desktop și o creează cu succes. Și trebuie să-l șterg. Și apoi încă unul. Și așa de fiecare dată.
Din fericire, acest comportament este ușor de dezactivat - trebuie doar să deschideți setările Google Play (în panoul din stânga) și să debifați caseta de selectare „Adăugați pictograme”. Acolo puteți dezactiva și solicitarea forțată a parolei la fiecare 30 de minute atunci când cumpărați aplicații, precum și actualizarea automată urâtă a aplicațiilor.
02. DEZACTIVAȚI CĂUTAREA GOOGLE ȘI ALTE SOFTWARE INUTIL
Firmware-ul standard al smartphone-urilor Android include o cantitate imensă de software inutile, variind de la o grămadă de aplicații Google (știți că Google cere companiilor producătoare să includă aproape tot software-ul pe care îl dezvoltă în firmware-ul dispozitivelor lor?) și terminând cu toate un fel de gunoi de la producătorul de smartphone-uri. Toate acestea (sau cel puțin majoritatea) pot fi dezactivate.
Accesați „Setări → Aplicații → Toate”, atingeți software-ul dorit și faceți clic pe „Dezactivați” (desigur, veți fi avertizat cât de „periculos” este acest lucru). Apropo, la deconectare cautare Google Va dispărea și Google Now, precum și bara de căutare de pe desktop (după o repornire), în loc de care va fi o zonă goală.
03. RESETARE LA MODUL SIGURAN
Puțini oameni știu, dar Android, ca multe alte sisteme de operare, are așa-numitul Safe mode. Acesta este un mod în care sistemul de operare pornește cu dezactivat aplicații terță parte. Programele malware care nu sunt scrise foarte abil (unul care nu este înregistrat în partiția de sistem) cade apoi, ca orice software care interferează cu operatie normala sisteme. Modul sigur poate fi folosit pentru a ocoli blocatoarele de ecran, aplicațiile care provoacă blocarea smartphone-ului sau, alternativ, pentru a identifica cine consumă de fapt bateria - următoarea actualizare de firmware sau software.
Modul este activat într-un mod destul de simplu, dar deloc evident: ținând apăsat butonul de pornire și apoi ținând degetul pe elementul „Opriți alimentarea”. După repornire, vinovatul problemei poate fi eliminat prin „Setări → Aplicații”.
04. SCAPAȚI DE NOTIFICĂRI INSTRUCTIVE
„Constructia castelului s-a terminat!” - cum ai primit aceste notificări? Toți cei care nu sunt prea leneși încearcă să mă anunțe despre toate evenimentele posibile și imposibile: „Vasya Dzhubga ți-a răspuns pe Twitter”, „Ai 100.500 de mesaje noi”, „Ai câștigat o intervenție chirurgicală pentru a-ți mări piciorul drept”. Glisați o notificare și trei noi apar în locul ei.
Cum să scapi de toată această zgură: ține degetul pe notificare mult timp și debifează butonul „Oprire”. Aceasta este rețeta KitKat. În Lollipop, totul este puțin diferit, dar esența este aceeași: țineți apăsat, apoi butonul i, în fereastra care se deschide, puneți o bifă pe „Blocați”. De asemenea, puteți forța notificarea să fie o prioritate, astfel încât să fie întotdeauna în partea de sus.
05. NU UITAȚI DE MENIU DE SERVICII
O altă funcție deloc evidentă este meniul de service. Poate fi deschis formând *#*#4636#*#*. Practic sunt diferite Informații tehnice cum ar fi numărul IMEI, puterea semnalului, locația curentă sau tipul de rețea. Există însă și o funcție foarte utilă pentru unele situații pentru a forța smartphone-ul să treacă la tipul de rețea dorit (2G, 3G, LTE).
În condițiile unor niveluri slabe de semnal 3G/LTE, dispozitivul tinde să se reseteze la 2G pentru a economisi energia bateriei și pentru a asigura disponibilitatea abonaților. Acest comportament poate fi dezactivat. Deschideți meniul de servicii și în elementul „Configurați tipul de rețea preferat”, selectați numai WCDMA sau numai LTE. În același mod, puteți comuta smartphone-ul la 2G - numai GSM. Vă va ajuta dacă trebuie să economisiți energia bateriei și internetul este rar folosit. Apropo, puteți dezactiva și modulul radio de acolo cu totul (până la următoarea repornire, desigur).
Smartphone-urile bazate pe cipuri MTK chinezești au propriul și mult mai sofisticat meniu de servicii. Numărul lui este *#*#3646633#*#*. Există diverse informații de sistem și un număr mare de teste, printre care puteți găsi câteva setări utile, cum ar fi reglarea volumului apelului sau, de exemplu, modificarea setărilor GPS/AGPS. Meniul în sine este teribil de ilogic și conține informații atât de variate încât nici nu îndrăznesc să-l descriu, ci pur și simplu trimit cititorul la trei litere - XDA.
06. UTILIZAȚI UN BROWSER STANDARD
Nu știu de ce utilizatorilor nu le place atât de mult cel încorporat browser Android. După părerea mea, este minunat. Ușor, rapid, bazat pe motorul Chromium, se poate sincroniza cu cont Google(adică include imediat toate marcajele și parolele din Chrome), dar cel mai important, are o metodă de navigare foarte convenabilă și aproape ingenioasă. Acesta este așa-numitul meniu radial, care poate fi activat în setări (doar în Android 4.0–4.4).
07. GESTIONAȚI-VĂ CONTACTELE DE PE CALCULATOR
Google are servicii web nu doar pentru instalarea de la distanță a software-ului, blocarea și căutarea unui smartphone, ci și pentru gestionarea contactelor. Contactele tuturor persoanelor salvate și sincronizate la conectarea unui nou smartphone pot fi întotdeauna găsite pe pagina google.com/contacts. Ele pot fi vizualizate, editate, adăugate și șterse. În plus, în mod ciudat, este în esență parte din Gmail.
08. MONITORIZAȚI-VĂ ÎNCĂRCAREA PROCESORULUI
Android are o funcție încorporată pentru a afișa încărcarea curentă a CPU și este activă acest moment procesele în partea de sus a ecranului. În teorie, este destinat dezvoltatorilor de aplicații și firmware și este ascuns utilizatorilor obișnuiți, dar nimeni nu ne oprește să îl activăm. Dar mai întâi va trebui să ajungeți la secțiunea de setări „Pentru dezvoltatori”, care în mod implicit nu există deloc.
Accesați setări, apoi „Despre telefon”, găsiți linia „Număr de compilare” și atingeți-o de șapte ori la rând. Pe ecran ar trebui să apară mesajul „Ați devenit dezvoltator!”. Aceasta înseamnă că elementul „Pentru dezvoltatori” este acum deschis și mergem la el. Derulăm aproape până în partea de jos a ecranului și în secțiunea „Monitorizare” găsim comutatorul „Afișează încărcarea procesorului”.
Porniți-l și vedeți o listă în partea dreaptă sus a ecranului. Prima linie este așa-numita loadavg, care arată numărul de procese care au trebuit să ruleze sau să își aștepte rândul să ruleze în ultimul minut, cinci și zece minute. Ca să spunem foarte aproximativ: dacă aceste valori, împărțite la numărul de nuclee de procesor, sunt peste unu, aceasta înseamnă încărcare 100% a procesorului în ultimul minut, cinci sau, respectiv, zece minute. Mai jos este o listă a proceselor cu cele mai consumate de energie (în esență, un analog al comenzii de top de la Linux).
09. UTILIZAȚI ADB PENTRU BACKUP A SOFTWARE-ULUI DE PE CALCULATORUL DVS
Am scris deja de mai multe ori despre un instrument minunat numit ADB, care poate simplifica semnificativ gestionarea unui dispozitiv de pe un computer pentru o persoană familiarizată cu consola (aici vorbim în principal despre Linux, desigur). Pe lângă capacitatea de a instala software, de a transfera fișiere pe un smartphone, de a vizualiza jurnalele și alte lucruri utile, ADB a făcut recent posibilă copierea de rezervă a tuturor setărilor și aplicațiilor smartphone-ului.
Pentru a utiliza această funcționalitate, instalați driver ADB universal(goo.gl/AzZrjR), apoi descărcați ADB în sine (goo.gl/3P7klM), instalați driverul, apoi extindeți arhiva cu ADB, conectați smartphone-ul la computer cu un cablu USB, lansați Linie de comandași executați comanda
Pe ecranul smartphone-ului va apărea un mesaj care vă va cere să specificați parola de criptare pentru backup - puteți apăsa în siguranță „Următorul”. Procesul de backup al aplicației va începe, care va afecta atât pachetele APK în sine (steagul -apk din comandă), cât și setările acestora. Toate aplicațiile de pe cardul de memorie vor fi, de asemenea, incluse în backup. Puteți restaura o copie de rezervă folosind următoarea comandă:
$ adb restaurare backup . ab |
10. DEZACTIVAȚI TRANSFERUL DE DATE DE FUNDAL ÎN APLICAȚII
Lucrând în fundal, aplicațiile pot folosi în mod activ Internetul pentru o varietate de scopuri, de la actualizarea conținutului lor până la scurgerea de informații despre locația dvs. În plus, o astfel de activitate duce în orice caz la un consum crescut de baterie.
Android are capacitatea de a restricționa selectiv aplicațiile de la transferul de date în fundal, dar este situat într-un loc în care majoritatea utilizatorilor nu s-ar uita niciodată. Pentru a împiedica orice aplicație să folosească Internetul în fundal, trebuie să accesați setări, apoi „Transfer de date”, derulați în jos pe ecran până la lista de aplicații care utilizează activ rețeaua (pentru unii va fi o surpriză că există deloc) și apăsați pe software-ul dorit. În partea de jos va exista o opțiune pentru „Limitați activitatea de fundal”. Merită să rețineți că opțiunea va dezactiva transferul de date numai prin rețea de telefonie mobilă, astfel încât datele vor continua să circule prin Wi-Fi.
11. UTILIZAȚI BARA DE CĂUTARE
Adesea, posesorii de smartphone-uri Bazat pe Android neglijați bara de căutare din partea de sus a ecranului principal. Acest lucru este cu adevărat logic, având în vedere capacitatea de a căuta prin tastarea unei cereri în bara de adrese a oricărui browser mobil.
Între timp, bara de căutare de pe desktop face mult mai mult decât să vă redirecționeze solicitarea către google.com. Vă permite să căutați contacte, aplicații, evenimente din calendar, marcaje și istoricul browserului web mod automat. Pentru utilizarea normală a smartphone-ului, poate să nu fie la fel de util, dar atunci când conectați o tastatură externă, este un instrument indispensabil. Doar click
12. UTILIZAȚI SMART LOCK
Smart Lock este una dintre acele caracteristici la care nu te gândești, dar odată ce o încerci, nu poți trăi fără ea. Aceasta este una dintre cele mai notabile completări noi la Android Lollipop și una dintre cele mai utile caracteristici adăugate recent la Android. Ideea Smart Lock este extrem de simplă - dezactivează codul PIN sau altă protecție a ecranului de blocare dacă există un anumit dispozitiv Bluetooth sau o locație pe hartă în apropiere.
În mod implicit, Smart Lock este „un fel de” dezactivat. Adică nu se aprinde nicăieri, dar după asocierea cu un nou dispozitiv Bluetooth (de orice tip), cu siguranță se va oferi să-l adauge pe lista sa albă. După aceasta vei uita din nou de ea. Dar numai până când activați protecția ecranului de blocare în secțiunea „Securitate” a setărilor. Acum va funcționa așa cum ar trebui.
Setările Smart Lock în sine sunt în aceeași secțiune și, pe lângă adăugarea de noi dispozitive Bluetooth, puteți specifica acolo „locuri sigure”, împreună cu o listă de opțiuni bazate pe „observațiile” Google Now. Apropo, dacă îl dezactivați, așa cum este descris în primul sfat, atunci această funcționalitate se va pierde și ea.
13. ECONOMIA DREPTUL LA ENERGIE
O altă inovație notabilă de la Lollipop este modul său de economisire a energiei. ÎN Android standard a migrat de la firmware-ul producătorilor de smartphone-uri, care anterior îl vindeau independent. Acum funcția este disponibilă în Android pur - folosiți smartphone-ul la maxim, iar când încărcarea bateriei ajunge la 15%, sistemul vă solicită să activați modul de economisire a energiei, care dezactivează transferul de date în fundal, reduce luminozitatea la un minim, oprește niște senzori și reduce randarea ecranului FPS la câteva zeci de cadre pe oră. Dă-mi o secundă. Pentru claritate, bara de stare și butoanele de pe ecran din partea de jos a ecranului devin roșii - astfel încât să nu uitați.
Pentru a economisi bateria pe un smartphone cu ecran AMOLED, puteți seta imagini de fundal negre și puteți utiliza aplicații cu fundal negru.
Modul de economisire a energiei este personalizabil. Accesați „Setări → Baterie → meniu → Modul de economisire a energiei”. Aici puteți specifica condiția pentru pornirea automată a modului (deși alegerea este slabă: 5%, 15% sau niciodată) și, cel mai important, activați modul chiar acum. Foarte convenabil dacă aveți o călătorie lungă înainte fără posibilitatea de reîncărcare.
14. MONITORIZAREA TRAFICULUI
Cel mai probabil, producătorii de smartphone-uri, ca de obicei, vor lopata interfața standard Android 5.0 și vor schimba totul (bună ziua Samsung - cel mai mare fan al spargerii interfețelor), dar în cortina standard Lollipop, sau mai degrabă, în „a doua cortină” cu Există o evidențiere a opțiunilor de setări rapide. Butonul de transfer de date din centru nu comută deloc transferul de date, ci se extinde într-o interfață care vă permite nu numai să vizualizați consumul curent de trafic, ci și să dezactivați transferul de date folosind comutatorul de deasupra.
15. DISTRIBUIȚI NU TELEFONUL DVS., CI APLICAȚIA
Mai ales pentru cei cărora le place să-și dea telefonul altor persoane, Lollipop are o funcție de fixare a ecranului care vă permite să vă blocați smartphone-ul pe o aplicație fără a putea să o închideți sau să treceți la alta. La fel ca multe alte funcții utile, este complet invizibil și ascuns destul de adânc în setări. Pentru a activa, accesați „Setări → Securitate”, derulați aproape până la capăt și activați opțiunea „Blocați în aplicație”.
Acum, dacă faceți clic pe butonul de vizualizare rulează aplicații(„Răsfoiește”), un buton va apărea în partea de jos a miniaturii aplicației curente. Odată ce atingeți pictograma, ecranul va fi blocat în aplicația selectată și va trebui să țineți apăsat simultan butoanele Înapoi și Prezentare generală pentru a reveni. În acest caz, va trebui să introduceți un cod PIN dacă este setat pentru ecranul de blocare.
XX. UTILIZAȚI ACTIVITY LUNCHER
Orice grafic aplicație Android include una sau mai multe așa-numite „activități”. Fiecare dintre ele este o fereastră de aplicație (ecran), de exemplu ecranul principal sau ecranul de setări, poate chiar o fereastră de selecție a fișierelor. În mod implicit, puteți deschide direct (de pe desktop) doar acele activități pe care dezvoltatorul aplicației le marchează ca principale; restul sunt accesibile doar prin intermediul aplicației în sine și numai dacă dezvoltatorul însuși permite acest lucru.
Cu toate acestea, având la îndemână instrumentul potrivit, puteți ajunge la orice altă activitate a oricărei aplicații și chiar puteți crea o comandă rapidă pentru aceasta pe desktop. Activity Launcher face exact asta. Doar instalați aplicația, selectați „Toate acțiunile” în meniul din partea de sus și găsiți software-ul de care aveți nevoie. Toate activitățile ei vor apărea pe ecran și oricare dintre ele poate fi deschisă printr-o simplă atingere sau plasată pe desktop ținând degetul mult timp.
Un exemplu de activități „interne” utile este fereastra de marcaje Chrome (Chrome → Bookmark), accesul la mecanismul ascuns AppOps în Android< 4.4.2 (Настройки → AppOps), запуск поиска в TuneIn Radio (tunein.ui.activities.TuneInSearchActivity). Очень много активностей имеет в себе ES Проводник, включая редактор, player muzical, vizualizator de imagini și multe altele. Oricare dintre ele poate fi lansat direct de pe desktop. În același mod, puteți deschide orice secțiune a setărilor și puteți obține acces la unele funcții ale sistemului de operare care sunt greu de atins. Aceasta este o funcționalitate complet legală și nu necesită root.
Android are un set mare de taste rapide pentru tastaturile conectate. Puteți folosi Arrow, Tab și Enter pentru a naviga pe desktop și în diverse meniuri. În plus, sunt disponibile următoarele combinații de taste:
Esc - butonul „Înapoi”;
Win + Esc - butonul Acasă;
Ctrl + Esc - butonul „Meniu”;
Alt + Tab - comută între aplicații;
Ctrl + Spațiu - comutare aspect;
Ctrl + P - deschideți setările;
Ctrl + M - control aplicații instalate;
Ctrl + W - schimba imaginea de fundal;
Win + E - scrie o scrisoare;
Win + P - music player;
Win + A - calculator;
Win + S - scrie SMS;
Win + L - calendar;
Win + C - contacte;
Win + B - browser;
Câștigă + M - Hărți Google;
Win + Space - căutare;Pentru a afla adresa MAC și IP, accesați „Setări → Wi-Fi → meniu → Avansat
funcții noi”. MAC și IP vor fi în partea de jos.Lollipop are un joc în stil Flappy Bird încorporat. Accesați „Setări → Despre telefon”,
Atingeți de mai multe ori elementul „Versiune Android”, apoi țineți degetul pe „Lollipop” care apare. Să ne jucăm.Google Now acceptă un număr mare de comenzi vocale în limba rusă. Toate pot fi împărțite în două grupuri: căutarea vocală și comenzile vocale în sine. Căutare vocală vă permite să efectuați o căutare inteligentă pe Google, atunci când sistemul afișează un anumit răspuns pe ecran în loc de o listă de link-uri, iar comenzile vocale vă permit să efectuați anumite acțiuni, de exemplu, trimiterea unui SMS sau setarea unei alarme. Lista comenzilor este afișată în imagine " Comenzi vocale Google Now.” Căutarea vocală include mai mult de o duzină tipuri variateîntrebări:
Vreme. Cum va fi vremea mâine dimineață?
Adrese. Unde este cea mai apropiată farmacie?
Informatii despre zbor. Când pleacă zborul Aeroflot numărul 2336?
Timp. Cât este ceasul la Londra?
Evenimente. Când apus azi?
Tehnica de calcul. Care este rădăcina pătrată a lui 2209?
Traducere. Cum se spune „castraveți” în spaniolă?
Sport. Când joacă Spartak?
Finanţa. Ce este indicele S&P 500 astăzi?
Date. Care este înălțimea celei mai înalte clădiri din lume?
Rate de schimb. Convertiți 2600 de rupii în dolari americani.
Imagini. Afișați fotografii cu podul Golden Gate.
Interesant este că Google Now înțelege un număr mare de întrebări mult mai puțin evidente în limba engleză. Ca exemplu putem da:
Ar trebui să port o jachetă azi?
Cât bacșiș pentru 420 de ruble?
Unde este coletul meu?
Desigur, nu este tot ce s-ar putea vorbi, dar nu se va putea prelungi articolul, iar multe dintre celelalte posibilități sunt deja cunoscute. Nu uita de aceste trucuri, iar smartphone-ul tău va deveni
putin mai convenabil. la 26 ianuarie 2017.