Rejimləri dəyişmək üçün android proqramı. Android-də proqramlar arasında keçid. Kompüterinizdə proqram təminatının ehtiyat nüsxəsini çıxarmaq üçün adb-dən istifadə edin

Əsas ekrandan açılan Başlatıcı nişanı telefonunuzda quraşdırılmış bütün proqramlar, o cümlədən buradan endirilmiş və quraşdırılmış proqramlar üçün nişanları ehtiva edir. Android Market və ya digər mənbələr.

Proqramı açdığınız zaman istifadə etdiyiniz digər proqramlar dayanmır; onlar işləməyə, musiqi ifa etməyə, veb səhifələri göstərməyə və s. davam edir. Eyni anda birdən çox proqramla işləmək üçün proqramlar arasında cəld keçid edə bilərsiniz. əməliyyat otağı Android sistemi və onun üzərində işləyən proqramlar ünsiyyət qurur ki, istifadə olunmayan proqramlar resursları sərf etməsin. Tətbiqlər dayandırılır və lazım olduqda yenidən işə salınır. Buna görə də, yüklənmiş proqramın düzgün işləmədiyinə əmin olmasanız, tətbiqləri dayandırmaq üçün heç bir səbəb yoxdur. Tətbiqlərin yaddaşdan necə istifadə etməsi və həmin proqramların idarə edilməsi haqqında ətraflı məlumat üçün baxın.

Telefonunuz üçün əlavə proqramlar tapmaq və quraşdırmaq haqqında məlumat əldə edin (o cümlədən performans alətləri, kommunal xidmətlər, oyunlar, istinad materialları və digər növlər proqram təminatı) bölməsinə baxın.

Launchpad-in açılması və bağlanması

Başlatıcıya sığacaqdan daha çox açıq tətbiqiniz varsa, bütün proqramları görmək üçün başlatma cihazını yuxarı və ya aşağı sürüşdürə bilərsiniz.

Siz Başlatıcıda piktoqramı titrəyənə qədər basıb saxlamaq və sonra ikonanı Əsas ekranda istədiyiniz yerə çəkməklə əsas ekranınıza proqram ikonasını əlavə edə bilərsiniz.

Proqramı açmaq üçün ikona toxunduqda və ya piktoqramı Launchpad-dən Əsas ekrana köçürdükdə Launchpad avtomatik bağlanır.

Tətbiqin açılması

  • Launcher panelindəki proqram simgesini basın.
  • Əsas ekranda proqram ikonasına toxunun.

Ən son istifadə olunan proqrama keçin

Bütün son istifadə edilmiş proqramların nişanlarını ehtiva edən kiçik bir pəncərə açılacaq.

  • Əlaqədar tətbiqi açmaq üçün ikonaya toxunun.

Və ya düyməni basın Geri cari tətbiqə qayıtmaq üçün.

Mən istifadəçinin açıq olduğu proqramlar arasında keçid edə bilməsi lazım olan proqram hazırlayıram (məsələn, çoxtasklı menyudakı proqramlar), məndə 10 yeni proqramın ComponentName var və onları işə sala bilərəm (yəni, onlara keçə bilərsiniz). ) bunun kimi:

Niyyət = yeni Niyyət(); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); intent.setComponent(info); startActivity(niyyət);

Bununla belə, Facebook-da (və yəqin ki, bəzi oxşar proqramlar) dəyişməyə çalışdığım zaman o, xüsusi icazə tələb edir:

java.lang.SecurityException: İcazənin rədd edilməsi: Başlanğıc Niyyəti (flg=0x10000000 cmp=com.facebook.katana/.activity.FbFragmentChromeActivity ) ProcessRecord(42310bc0 8578:com.javanut13.multitaskheads100id=05, u1709u) ) tələb edir com.facebook.permission.prod.FB_APP_COMMUNICATION

Proqramı işə salmaq əvəzinə proqrama keçməklə bunun bir yolu varmı? Diqqəti başqa tətbiqə göndərə bilərəmmi?

0

1 cavab

İcazəniz yoxdursa, düşünürəm ki, başqa proqramın fəaliyyətinə yalnız onun "ixrac" atributu doğru olaraq təyin edildikdə başlaya bilərsiniz. Facebook-a bənzər bir proqram bunu false olaraq təyin edə bilər və digər proqrama onun fəaliyyətinə girişə icazə vermir.

Mən bunu tək sınamamışam, lakin siz aşağıdakı kodları sınaya bilərsiniz:

Niyyət extApp= getPackageManager().getLaunchIntentForPackage(facebook-paket-adı); this.startActivity(extApp);

Ümid edirəm kömək edər.

Tətbiq həmişə bir ekrandan ibarət deyil. Məsələn, biz çox yaratdıq faydalı proqram və istifadəçi onun müəllifinin kim olduğunu bilmək istəyir. O, “Haqqında” düyməsini sıxır və ona aparılır yeni ekran, proqramın versiyası, müəllifi, veb-sayt ünvanı, müəllifin neçə pişiyi olduğu və s. haqqında faydalı məlumatların olduğu yerdə. Fəaliyyət ekranını başqa bir səhifəyə keçidi olan veb səhifə kimi düşünün. Fayldakı koda baxsanız MainActivity.javaƏvvəlki dərslərdən bizim sinifdə olduğunu görəcəksiniz Əsas Fəaliyyətüçün də aiddir Fəaliyyət(və ya onun varisləri) və ya daha dəqiq desək, ondan miras qalmışdır.

İctimai sinif MainActivity AppCompatActivity-ni genişləndirir

Təxmin etdiyiniz kimi, oxşar ola biləcək yeni bir sinif yaratmalıyıq Əsas Fəaliyyət və sonra düyməni basdıqda birtəhər ona keçin.

Təcrübə üçün ilk dərsdən proqramı götürəcəyik və təcrübələr üçün düymədən istifadə edəcəyik (və ya yaradın yeni layihə ekranda bir düymə ilə). Sonra, faydalı məlumatları göstərmək üçün yeni bir forma yaradaq. Məsələn, istifadəçiyə pişiyin sağa-sola gedəndə nə etdiyini göstərək. Razılaşın, bu, Kainatı açmaq üçün açarı təmin edən çox vacib məlumatdır.

Studiyada hazır şablonlar olsa da, biz əl ilə yeni fəaliyyət yaradacağıq. Ancaq burada mürəkkəb bir şey yoxdur və daha yaxşı başa düşmək üçün hər şeyi əl ilə etmək faydalıdır.

Gəlin yeni XML işarələmə faylı yaradaq fəaliyyət_haqqında.xml qovluğunda res/layout. Qovluğa sağ vurun layout və arasından seçin kontekst menyusu Yeni | Layout resurs faylı. Dialoq qutusu görünəcək. Birinci sahədə fayl adını daxil edin fəaliyyət_haqqında. İkincisində, kök elementi daxil etməlisiniz. Varsayılan olaraq oradadır ConstraintLayout. Mətni silin və daxil edin ScrollView. Studiyaya hazır variantları təklif etmək üçün bir neçə simvol daxil etmək kifayətdir; tam sözün daxil edilməsini gözləmədən dərhal Enter düyməsini basa bilərsiniz:

Elementi daxil edəcəyimiz müvafiq boşluq alacaqsınız TextView.

Məlumat resurslardan, yəni sətir resursundan alınacaq haqqında_mətn. İndi o, qırmızı rənglə vurğulanır ki, bu da məlumatın olmadığını göstərir. Basmaq mümkündü Alt+Enter və dialoq qutusuna mətn daxil edin. Ancaq nümunəmiz üçün bu üsul işləməyəcək, çünki mətnimiz nəzarət simvollarından istifadə edərək çox sətirli olacaq. Beləliklə, gəlin bunu fərqli edək. Faylı açaq res/values/strings.xml və aşağıdakı mətni əl ilə daxil edin:

Lukomoryenin yanında yaşıl palıd var;\n O palıdın üstündə qızıl zəncir:\n Gecə də gündüz də var alim pişik\nHər şey zəncirlə dolanır və dolaşır;\nO gedir sağ- mahnı başlayır,\n Sol- nağıl danışır.

kimi ən sadə HTML mətn formatlama teqlərindən istifadə etdik , , . Bizim nümunəmiz üçün pişiyə və hərəkət istiqamətinə aid sözləri qalın hərflərlə vurğulamaq kifayətdir. Mətni yeni sətirə köçürmək üçün simvollardan istifadə edin \n. Yeni ekranın başlığı üçün başqa bir sətir resursu əlavə edək:

Proqram haqqında

İşarələri anladıq. Sonra pəncərə üçün bir sinif yaratmalısınız HaqqındaActivity.java. Menyudan seçin Fayl | Yeni | Java sinfi və tələb olunan sahələri doldurun. Əvvəlcə yalnız adı göstərmək kifayətdir. Sonra başqa sahələrlə məşğul olacaqsınız.

Boşluğu alaq.

İndi sinif demək olar ki, boşdur. Kodu əl ilə əlavə edək. Sinif abstrakt sinifdən miras almalıdır Fəaliyyət ya da yaxınları bəyənir Fragment Fəaliyyəti, AppCompatActivity və s. əlavə edək Fəaliyyəti genişləndirir. Fəaliyyət sinfinin metodu olmalıdır onCreate(). Siçan kursorunu sinifin içərisinə qoyun və menyudan seçin Kod | Metodları ləğv edin(Ctrl+O). Dialoq qutusunda biz tələb olunan sinfi axtarırıq, sürətli axtarış üçün klaviaturada ilk simvolları daxil edə bilərsiniz. Yaradılmış metodda metodu çağırmaq lazımdır setContentView(), hazırlanmış işarələməni ekrana yükləyəcək. Bu seçimimiz olacaq.

Paket ru.alexanderkimov.helloworld; android.app.Activity idxalı; android.os.Bundle idxalı; /** * 12/01/2014 tarixində Alexander Klimov tərəfindən yaradılmışdır. */ ictimai sinif AboutActivity Fəaliyyəti genişləndirir ( @Override protected void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_about); ) )

İndi ən vacib hissə gəlir. Bizim vəzifəmiz birinci ekranda bir düyməyə basdığımız zaman yeni ekrana keçməkdir. Gəlin dərsə qayıdaq Əsas Fəaliyyət. Düymə kliklərinin idarəedicisini yazaq:

OnClick (Görünüşə bax) (Niyyət məqsədi = yeni Niyyət(MainActivity.this, AboutActivity.class); startActivity(niyyət); )

Burada dərsdə təsvir olunan düyməni basma emal üsulundan istifadə etdim.

Yeni ekranı işə salmaq üçün sinfin nümunəsini yaratmalısınız Niyyət və birinci parametrdə cari sinfi, ikincidə isə getmək üçün sinfi göstərin, bizdə bu var Fəaliyyət haqqında. Bundan sonra üsul çağırılır startActivity(), yeni ekranı işə salır.

İndi tətbiqi emulyatorda sınamağa cəhd etsəniz, səhv mesajı alacaqsınız. Nə səhv etdik? Biz vacib bir addımı qaçırdıq. Yenisini qeydiyyatdan keçirməlisiniz Fəaliyyət manifestdə AndroidManifest.xml. Layihənizdə bu faylı tapın və üzərinə iki dəfə klikləyin. Fayl redaktə pəncərəsi açılacaq. Yeni etiket əlavə edin bağlanış etiketindən sonra ilk fəaliyyət üçün. Özünüz yazın və göstərişlərdən aktiv istifadə edin. Aşağıdakıları əldə edəcəksiniz:

Simli resursun lazımlı olduğu yer budur haqqında_başlıq. Proqramı işə salırıq, düyməni sıxırıq və bir pəncərə alırıq Proqram haqqında. Beləliklə, biz yeni pəncərə yaratmağı və düyməni basaraq ona zəng etməyi öyrəndik. Və bizim ixtiyarımızda olan meqa-rahat proqramımız var - indi pişiyin sola getdiyi zaman nə edəcəyi barədə həmişə əlimizdə bir ipucu olacaq.

Bir daha qeyd edək ki, yaradılmış ikinci fəaliyyət sinfi sinifdən miras alınmalıdır Fəaliyyət və ya oxşarları ( ListActivity və s.), XML işarələmə faylına sahib olun (lazım olduqda) və manifestdə göstərilməlidir.

Metod çağırdıqdan sonra startActivity() yeni bir fəaliyyət başlayacaq (bu halda Fəaliyyət haqqında), görünəcək və işləyən komponentləri ehtiva edən yığının yuxarısına keçəcək. Metod çağırarkən bitir() yeni fəaliyyətdən (və ya hardware qaytarma düyməsi basıldıqda) o, bağlanacaq və yığından çıxarılacaq. Tərtibatçı eyni üsuldan istifadə edərək əvvəlki (və ya hər hansı digər) fəaliyyətə də keçə bilər startActivity().

Üçüncü ekranın yaradılması - tənbəllər üçün bir üsul

Proqramçılar, pişiklər kimi, tənbəl varlıqlardır. Həmişə yadda saxlayın ki, fəaliyyət üçün işarələmə və ondan miras qalan sinif yaratmalısınız Fəaliyyət, və sonra sinfi manifestdə qeyd etməyi unutmayın - yaxşı.

Bu halda, menyudan seçin Fayl | Yeni | Fəaliyyət | Əsas Fəaliyyət(və ya digər şablon). Sonra, yeni bir fəaliyyət yaratmaq üçün tanış pəncərə görünəcək. Tələb olunan sahələri doldurun.

Düyməni basın Bitir və fəaliyyət hazır olacaq. Bunu yoxlamaq üçün manifest faylını açın və yeni giriş olub olmadığını yoxlayın. Mən hətta sinif və işarələmə faylları haqqında danışmıram, onlar öz qarşınızda görünəcəklər.

Əsas fəaliyyət ekranına özünüz yeni düymə əlavə edin və yaradılmış fəaliyyətə keçmək üçün kod yazın.

Əvvəlcə sinif, işarələmə və manifest arasındakı əlaqəni başa düşməyiniz üçün yeni fəaliyyət üçün bütün lazımi komponentləri əl ilə yaratmağı məsləhət görərdim. Və buna öyrəşdiyiniz zaman işinizi sürətləndirmək üçün Fəaliyyət Yaratma Sihirbazından istifadə edə bilərsiniz.

Fəaliyyətlər arasında məlumat ötürülməsi

Başqa bir fəaliyyət ekranına zəng etmək üçün sadə bir nümunədən istifadə etdik. Bəzən yalnız yeni ekrana zəng etmək deyil, həm də ona məlumat ötürmək lazımdır. Məsələn, istifadəçi adı. Bu vəziyyətdə xüsusi bir sahədən istifadə etməlisiniz əlavə məlumat, sinifdə olan Niyyət.

Region əlavə məlumat cütlərin siyahısıdır açar/dəyər, niyyəti ilə birlikdə nəql olunur. Sətirlər açar kimi istifadə olunur və istənilən primitiv məlumat növləri, primitivlərin massivləri, sinif obyektləri dəyərlər üçün istifadə edilə bilər. Paket və s.

Məlumatı başqa fəaliyyətə ötürmək üçün metoddan istifadə edin putExtra():

Intent.putExtra("Açar", "Dəyər");

Qəbul edən fəaliyyət bəzi uyğun metodu çağırmalıdır: getIntExtra(), getStringExtra() və s.:

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

Əvvəlki nümunəni təkrarlayaq. Artıq üç fəaliyyətimiz var. Birinci fəaliyyətdə iki mətn sahəsi və bir düymə olacaq. Görünüş aşağıdakı kimi ola bilər:

İkinci fəaliyyətdə İkinci Fəaliyyət elementi təyin edin TextView, burada ilk fəaliyyətdən alınan mətni göstərəcəyik. Metod üçün aşağıdakı kodu yazaq onCreate() ikinci fəaliyyətdə.

@Override qorunan void onCreate(Bundle savedInstanceState) ( super.onCreate(savedInstanceState); setContentView(R.layout.activity_second); Simli istifadəçi = "Heyvan"; Simli hədiyyə = "pişi çuxur"; TextView infoTextView = (TextView)findViewByI .id.textViewInfo); infoTextView.setText(istifadəçi + " , sizə " + hədiyyə verildi); )

İndi proqramı işə salsaq və məqalənin birinci hissəsində təsvir olunduğu kimi sadəcə ikinci pəncərəni çağırsaq, onda standart yazını görəcəyik. Heyvan, sənə pişi çuxuru verdilər. Razılaşın, bu cür mesajları almaq olduqca zəhlətökəndir.

Vəziyyəti düzəldək. Kodu ilk fəaliyyətə əlavə edin:

Ümumi ləğv onClick(Görünüşə bax) ( EditText userEditText = (EditText) findViewById(R.id.editTextUser); EditText giftEditText = (EditText) findViewById(R.id.editTextGift); Niyyət niyyəti = yeni Niyyət(MainActivity.this, Second). class); // istifadəçi adı düyməsinə mətni birinci mətn sahəsindən intent.putExtra("istifadəçi adı", userEditText.getText().toString()); // hədiyyə açarına mətni ikincidən itələyirik. mətn sahəsi intent.putExtra("hədiyyə ", giftEditText.getText().toString()); startActivity(niyyət); )

Obyekti xüsusi qaba yerləşdirdik Niyyət mətn sahələrindən götürülmüş dəyərləri olan iki düymə. İstifadəçi məlumatı mətn sahələrinə daxil etdikdə, o, bu konteynerə daxil olacaq və ikinci fəaliyyətə keçəcək.

İkinci fəaliyyət aşağıdakı kimi (qalın hərflərlə) mesajları isti qəbul etməyə hazır olmalıdır.

// Defolt dəyərlər Sətir istifadəçi = "Heyvan"; Simli hədiyyə = "pişi dəliyi"; user = getIntent().getExtras().getString("istifadəçi adı"); hədiyyə = getIntent().getExtras().getString("hədiyyə"); TextView infoTextView = (TextView)findViewById(R.id.textViewInfo); infoTextView.setText(istifadəçi + " , sizə " + hədiyyə verildi);

İndi mesaj bəziləri üçün daha az təhqiredici və hətta xoş görünür. Mürəkkəb nümunələrdə məlumatları emal edərkən bir çek əlavə etmək məsləhətdir. Boş tipli məlumatlarla ikinci fəaliyyətə başladığınız vəziyyətlər ola bilər sıfır, bu, tətbiqin çökməsinə səbəb ola bilər.

Bizim vəziyyətimizdə sətir dəyəri gözlədiyimizi bilirik, buna görə kodu bu şəkildə yenidən yazmaq olar:

Niyyət niyyəti = getIntent(); user = intent.getStringExtra("istifadəçi adı");

İstifadəçi = getIntent().getStringExtra("istifadəçi adı");

Proqramın bir çatışmazlığı var - kimdən salam aldığımız aydın deyil. Hər hansı yaxşı yetişdirilmiş meymun anonim mənbədən hədiyyə qəbul etməyəcək. Beləliklə, ev tapşırığı olaraq, mesajı göndərən istifadəçinin adını daxil etmək üçün başqa mətn sahəsi əlavə edin.

Google açarlar üçün aşağıdakı formatdan istifadə etməyi tövsiyə edir: prefiks kimi paket adınız, ardınca açarın özü. Bu halda, digər proqramlarla əlaqə qurarkən açarın unikallığına əmin ola bilərsiniz. Bu kimi bir şey:

İctimai yekun statik String USER = "ru.alexanderkimov.myapp.USER";

Vaska pişiyini kim düzəltdi - nəticəni geri alırıq

Sadəcə məlumatları başqa fəaliyyətə ötürmək həmişə kifayət deyil. Bəzən bağlandıqda başqa bir fəaliyyətdən məlumatı geri almalısınız. Əgər əvvəllər metoddan istifadə etmişdiksə startActivity(Niyyət niyyəti), onda əlaqəli bir üsul var startActivityForResult(Niyyət niyyəti, int RequestCode). Metodlar arasındakı fərq budur əlavə parametr Sorğu Kodu. Bu, əsas etibarilə, özünüz tapa biləcəyiniz tam ədəddir. Nəticənin kimdən gəldiyini ayırd etmək üçün lazımdır. Tutaq ki, beş əlavə ekranınız var və siz onlara 1-dən 5-ə qədər qiymətlər təyin edirsiniz və bu koddan istifadə edərək kimin nəticəsini emal etməli olduğunuzu müəyyən edə bilərsiniz. Siz -1 dəyərindən istifadə edə bilərsiniz, o zaman metodu çağırmaqla eyni olacaq startActivity(), yəni. heç bir nəticə əldə etməyəcəyik.

Metoddan istifadə etsəniz startActivityForResult(), sonra nəticəni almaq üçün kodunuzdakı metodu ləğv etməlisiniz onActivityResult() və nəticəni emal edin. Qarışıq? Bir nümunəyə baxaq.

Deyək ki, siz detektivsiniz. Restoranda nüfuzlu şəxsin masasından 2 ədəd kolbasa və digər məhsulların oğurlanması barədə məlumat daxil olub. Şübhə üç şübhəlinin üzərinə düşdü - qarğa, sikilmiş it və Vaska pişiyi.

Ziyarətçilərdən biri nümayiş etdirdiyi iPhone-dan bir sıra fotolar təqdim etdi:


Başqa bir şahidin ifadəsi də var: Və Vaska qulaq asır və yeyir.

Yeni layihə yaradın Şerlok iki fəaliyyətlə. Birinci ekranda ikinci ekrana keçid düyməsi və oğrunun adının göstərildiyi mətn etiketi olacaq.


Üst