Android uygulamaları Kotlin, Java programlama dili ve C++ dilleri kullanılarak yazılabilir. Android SDK araçları derleme kodunuzu veri ve kaynak dosyalarınızla birlikte bir APK veya Android App Bundle'a dönüştürme.
.apk
son ekine sahip bir arşiv dosyası olan Android paketi,
sırasında gerekli olan Android uygulamasının içeriğini ve bu dosya, Android destekli
kullandığı araçlardan biridir.
.aab
son ekine sahip bir arşiv dosyası olan Android App Bundle,
gerekli olmayan bazı ek meta veriler dahil olmak üzere bir Android uygulama projesinin
belirler. AAB bir yayınlama biçimidir ve Android cihazlara yüklenemez. Google
APK oluşturma ve imzalama işlemlerini daha sonraki bir aşamaya erteler.
Uygulamanızı Google üzerinden dağıtırken Örneğin Play'in sunucuları, Play Store'da yalnızca kaynakları ve uygulamaları içeren optimize edilmiş APK'lar uygulamanın yüklenmesini isteyen cihaz için gereken kod.
Her Android uygulaması kendine ait bir güvenlik korumalı alanında bulunur ve korumalı alan aşağıdaki Android güvenlik özellikleri:
- Android işletim sistemi çok kullanıcılı bir Linux sistemidir. Burada her uygulama olabilir.
- Sistem, varsayılan olarak her uygulamaya benzersiz bir Linux kullanıcı kimliği atar. Bu kimlik yalnızca uygulama tarafından tanınmaz. Sistem, bir klasördeki tüm dosyalar için izinleri uygulamayı kullanarak, yalnızca bu uygulamaya atanan kullanıcı kimliği erişebilir.
- Her işlem kendi sanal makinesine (VM) sahiptir. Bu nedenle bir uygulamanın kodu diğer uygulamalar.
- Varsayılan olarak her uygulama kendi Linux işleminde çalışır. Android sistemi, herhangi bir durum da uygulanması gerekir ve ardından işlemi kapatır. artık kaldırıldığında veya sistemin diğer uygulamalar için belleği kurtarması gerektiğinde kullanılabilir.
Android sistemi en az ayrıcalık ilkesini uygular. Yani, varsayılan olarak her uygulama yalnızca çalışmasını sağlamak için gereken bileşenlere erişebilir ve artık yok. Bu, uygulamanın bazı bölümlerine erişilemediği çok güvenli bir ortam oluşturur. sistemle ilgili işlemler de yapabilir.
Bununla birlikte, bir uygulamanın içerik paylaşımı için verilerinizi diğer uygulamalarla uygulamanın sistem hizmetlerine erişmesi için:
- İki uygulamanın aynı Linux kullanıcı kimliğini paylaşmasını sağlamak mümkündür. Bu durumda, birbirlerinin dosyalarına erişebilirler. Aynı kullanıcı kimliği, aynı Linux işleminde çalışacak ve aynı sanal makineyi paylaşacak şekilde düzenlenebilir. İlgili içeriği oluşturmak için kullanılan uygulamaları da aynı sertifikayla imzalanmalıdır.
- Bir uygulama, cihazın yer, kamera ve Bluetooth bağlantısı. Kullanıcı ve bu izinleri açıkça verin. İzinler hakkında daha fazla bilgi için bkz. Android'deki İzinler.
Bu dokümanın geri kalanında aşağıdaki kavramlar açıklanmaktadır:
- Uygulamanızı tanımlayan temel çerçeve bileşenleri
- Bileşenleri ve gerekli cihazı bildirdiğiniz manifest dosyası özellikleri uygulamasını indirin.
- Uygulama kodundan ayrı olan ve uygulamanızın çeşitli cihaz yapılandırmaları için davranışını incelikle optimize edebilir.
Uygulama bileşenleri
Uygulama bileşenleri, Android uygulamasının temel yapı taşlarıdır. Her biri bileşeni, sistemin veya kullanıcının uygulamanıza girebileceği bir giriş noktasıdır. Biraz diğerlerine bağlıdır.
Dört tür uygulama bileşeni vardır:
- Etkinlikler
- Hizmetler
- Yayın alıcıları
- İçerik sağlayıcılar
Her tür farklı bir amaca hizmet eder ve bir bileşenin nasıl oluşturulduğunu ve yok edildiğini tanımlayan ayrı bir yaşam döngüsüne sahiptir. Aşağıdaki bölümlerde dört uygulama bileşeni türü açıklanmaktadır.
- Etkinlikler
- Etkinlik, kullanıcıyla etkileşim kurmak için giriş noktasıdır. Tek bir sayfayı temsil eder
kullanıcı arayüzüne sahip ekran. Örneğin,
bir e-posta uygulamasında yeni iletilerin listesini gösteren bir etkinlik
e-posta, e-posta oluşturmak için başka bir etkinlik ve e-posta okumak için başka bir etkinlik. Her ne kadar
Aktiviteler, e-posta uygulamasında tutarlı bir kullanıcı deneyimi oluşturmak için birlikte çalışıyor.
ve diğerlerinden bağımsızdır.
Farklı bir uygulama bunlardan herhangi birini başlatabilir Etkinlikleri kontrol edebilirsiniz. Örneğin, bir kamera uygulaması kullanıcının resim paylaşmasına izin vermek için e-posta uygulamasında yeni e-posta oluşturma etkinliği.
Etkinlikler, sistem ve uygulama arasında aşağıdaki temel etkileşimleri kolaylaştırır:
- Kullanıcının o anda önemsediği konuları (ekranda görünenleri) takip ederek etkinliği barındıran işlemi çalıştırmaya devam eder.
- Daha önce kullanılan hangi işlemlerin durdurulmuş etkinlikler içerdiğini bilme ve kullanılabilir durumda tutmak için bu süreçlere daha çok öncelik vermeniz gerekir.
- Kullanıcının etkinliklere geri dönebilmesi için işlemin sonlandırılmasını sağlayarak uygulamanın tamamlanmasına yardımcı olma geri yüklenir.
- Uygulamaların birbirleri arasında kullanıcı akışlarını uygulaması ve sistemin bu işlemleri yapabilmesi için koordine etmeye yardımcı olur. Bunun başlıca örneği paylaşımdır.
Bir etkinliği
Activity
sınıfının alt sınıfı olarak uygularsınız. Daha fazlaActivity
sınıfı hakkında bilgiler için bkz. Etkinliklere giriş. - Hizmetler
- Hizmet, bir uygulamanın arka planda çalışmaya devam etmesini sağlamak için kullanılan genel amaçlı bir giriş noktasıdır
çeşitli nedenlerle kullanır. Uzun süreli işlemler gerçekleştirmek için arka planda çalışan bir bileşendir
uzaktaki süreçlerde iş
gerçekleştirmek için kullanılır. Hizmetler, kullanıcı arayüzü sağlamaz.
Örneğin, Örneğin, kullanıcı farklı bir uygulamadayken hizmet arka planda müzik çalabilir veya Kullanıcının bir etkinlikle etkileşimini engellemeden ağ üzerinden veri getirebilir. Diğer gibi bir bileşen, hizmeti başlatabilir ve çalıştırmasına veya ona bağlanmasına izin verebilir anlamak zorundasınız.
Sisteme bir uygulamayı nasıl yöneteceğini bildiren iki tür hizmet vardır: başlatılan hizmetler ve bağlı hizmetlerdir.
Başlatılan hizmetler, sisteme işler tamamlanana kadar hizmetleri çalışır durumda tutmasını söyler. Bunun için bazı verileri arka planda senkronize etmeniz veya kullanıcı uygulamadan ayrıldıktan sonra bile müzik çalmanız gerekebilir. Verileri arka planda senkronize etmek veya müzik çalmak farklı başlatma türlerini ifade eder. hizmetlerdir:
- Müzik çalma, kullanıcının doğrudan farkında olduğu bir şeydir ve uygulama bunu kullanıcıya iletir ön planda olmasını istediğini belirterek sisteme çalıştırdığını gösterir. Bu durumda sistem, müşterinin İşlem devam ediyor, çünkü kullanıcı kaldırılırsa kötü bir deneyim yaşayacaktır.
- Normal bir arka plan hizmeti, kullanıcının doğrudan farkında olduğu bir şey değildir; daha fazla özgürlüğe sahip olduğunu gördük. Öldürmesine izin verebilir, daha önemli işlemler için RAM'e ihtiyacı varsa hizmeti daha sonra yeniden başlatmayı kullanıcının aklına takılan konulardır.
Bağlı hizmetler, başka bir uygulama (veya sistem) geliştirmenizi sağlar. Bağlanan hizmet, başka bir işleme API sağlar ve sistem arasında bir bağımlılık olduğunu bilir. Yani A işlemi sistem B işlemini ve hizmetini A için çalışır durumda tutması gerektiğini bilir. Ayrıca, Müşteriyi önemseyen bir şeyse B sürecini kullanıcı tarafından yardımcı olur.
Hizmetler, esnek olmalarından dolayı faydalıdır. her türlü üst düzey sistem konsepti için yapı taşları. Animasyonlu duvar kağıtları, bildirim dinleyiciler, ekran koruyucular, giriş yöntemleri, erişilebilirlik hizmetleri ve daha birçok temel sistem özelliği Bunların tümü, uygulamaların uyguladığı ve çalışırken sistemin bağlandığı hizmetler olarak oluşturulur.
Bir hizmet,
Service
alt sınıfı olarak uygulanır. Okuyucu Gelirleri Yöneticisi'niService
sınıfı hakkında daha fazla bilgi için Hizmetlere genel bakış.Not: Uygulamanız Android 5.0 (API düzeyi 21) veya sonraki sürümleri hedefliyorsa işlemleri planlamak için
JobScheduler
sınıfını kullanın. JobScheduler üzerindeki güç tüketimini azaltmak için işleri en uygun şekilde planlayarak pil tasarrufu avantajını da sunar. Doze API ile çalışın. Bu sınıfı kullanma hakkında daha fazla bilgi için bkz.JobScheduler
referans belgeler. - Yayın alıcıları
- Yayın alıcısı, sistemin etkinlikleri şuraya iletmesini sağlayan bir bileşendir:
uygulamanın sistem genelindeki yayınlara yanıt verebilmesi için uygulamayı normal bir kullanıcı akışının dışında bırakması
duyurulur. Yayın alıcıları da uygulamaya giden iyi tanımlanmış başka bir giriş olduğundan, sistem
çalışmayan uygulamalara bile yayın gönderebilir.
Örneğin, bir uygulama kullanıcıya yaklaşan bir etkinlik hakkında bilgi vermek üzere bildirim yayınlamak için alarm zamanlama. Alarm, uygulamadaki bir
BroadcastReceiver
cihazına iletildiğinden, uygulamanın çalışmaya devam eder.Ekranın kapalı olduğunu duyuran bir yayın gibi birçok yayın sistemden yapılır. pil seviyesi düşük veya fotoğraf çekildi. Uygulamalar ayrıca yayınları başlatabilirler. Örneğin, diğer uygulamalara bazı veriler cihaza indirilir ve kullanıma hazır olur.
Anons yapsa da Alıcılar, kullanıcı arayüzü göstermiyor, bir durum çubuğu bildirimi oluşturabilir bir yayın etkinliği gerçekleştiğinde kullanıcıyı uyarmak için kullanılır. Fakat daha yaygın bir şekilde, yayın alıcı diğer bileşenlere sadece bir ağ geçidi olarak tasarlanmıştır ve minimum düzeyde iş yapmayı amaçlar.
Örneğin, bir yayın alıcısı bazı çalışmaları gerçekleştirmek için
JobService
programlayabilir.JobScheduler
kullanarak bir etkinlikte. Yayın alıcıları genellikle birbiriyle etkileşimde bulunan uygulamaları içerir. Bu nedenle, yayın sırasında bu sorunların farkında olmak önemlidir. güvenlik açısından olası sonuçları da dikkate alır.Yayın alıcı,
BroadcastReceiver
alt sınıfı olarak uygulanır. ve her yayın birIntent
nesnesi olarak sunulur. Daha fazla bilgi içinBroadcastReceiver
sınıfını görüntüleyin. - İçerik sağlayıcılar
- İçerik sağlayıcı, saklayabileceğiniz paylaşılan bir uygulama verileri grubunu yönetir
dosya sisteminde, SQLite veritabanında, web üzerinde veya başka bir kalıcı depolama alanında
size gösterilen
erişebilir. Diğer uygulamalar, içerik sağlayıcı aracılığıyla sorgu yapabilir veya değişiklik yapabilir
(içerik sağlayıcı izin veriyorsa) verileri.
Örneğin, Android sistemi, Kullanıcının iletişim bilgilerini yöneten sağlayıcıdır. Uygun içerik sağlayıcıyı sorgulayabilir. Örneğin,
ContactsContract.Data
, hakkında bilgi okumak ve yazmak için karar verebilirsiniz.İçerik sağlayıcıyı bir veritabanındaki soyutlama olarak görmek cazip gelebilir çünkü yerleşik olarak birçok API ve destek sağlaması gerekir. Ancak bunların farklı bir temel amaçtır.
İçerik sağlayıcı, sistem için bir uygulamaya, adlandırılmış veri öğelerini yayınlamak amacıyla kullanılan bir giriş noktasıdır. URI şemasıyla tanımlanır. Böylece bir uygulama, içerdiği verileri bir Bu URI'ları diğer varlıklara dağıtarak, diğer varlıklara dağıtarak bunları diğer varlıklara dağıtarak dışı verilerdir. Bunun sistem, bir uygulamayı yönetirken bazı işlemler yapmasına olanak tanır:
- URI atamak uygulamanın çalışmaya devam etmesini gerektirmez. Dolayısıyla URI'lar, sahip olmanız gerekir. Sistemin yalnızca, sahibi olan bir uygulamanın Ancak uygulamanın verilerini ilgili URI'den aldığında çalışmaya devam etmesi gerekir.
- Bu URI'ler, önemli ve ayrıntılı bir güvenlik modeli de sağlar. Örneğin, uygulaması, içerdiği resmin URI'sını panoya yerleştirebilir, ancak içeriğini bırakabilir sağlayıcı, diğer uygulamaların özgürce erişememesi için kilitlendi. İkinci bir uygulama, panodaki URI'ye erişmesini sağlarsanız, sistem, uygulamanın Geçici bir URI izin izni kullanarak verilere erişme Böylece, yalnızca ilgili URI'nın arkasındaki verilere erişir ve ikinci uygulamada başka hiçbir şeye erişemez.
İçerik sağlayıcılar, yalnızca kendi hesabınıza özel verileri okuyup yazmak için de faydalıdır. ve paylaşılmıyor.
İçerik sağlayıcı,
ContentProvider
alt sınıfı olarak uygulanır ve diğer uygulamaların performans göstermesine olanak sağlayan standart bir grup API uygulamalıdır. işlemlerdir. Daha fazla bilgi için İçerik sağlayıcılar geliştiricisine bakın rehberini inceleyin.
Android sistem tasarımının benzersiz bir yönü, uygulamaların başka bir uygulamayla uygulamanın bileşenidir. Örneğin, kullanıcının bir varsa bunu yapan başka bir uygulama vardır ve uygulaması, kendiniz fotoğraf çekmek için bir etkinlik geliştirmek yerine bunu kullanabilir. Hayır kamera uygulamasındaki koda eklemeli veya hatta bağlantı vermelidir. Bunun yerine, kamera uygulamasında görüntünüzü yakalayan bir fotoğraf. İşlem tamamlandığında fotoğraf, kullanabilmeniz için uygulamanıza geri gönderilir. Kullanıcıya, kamera, uygulamanızın bir parçası gibi görünür.
Sistem bir bileşeni başlattığında, henüz başlamadıysa söz konusu uygulamaya ilişkin işlemi başlatır.
çalışır ve bileşen için gereken sınıfları somutlaştırır. Örneğin,
Uygulama, kamera uygulamasında fotoğraf çeken etkinliği başlatır.
uygulamanızın kendi işleminde değil, kamera uygulamasına ait olan işlemde çalışır.
Bu nedenle, diğer çoğu sistemdeki uygulamaların aksine Android uygulamalarında tek bir giriş yoktur.
nokta: main()
işlevi yoktur.
Çünkü sistem her uygulamayı ayrı bir işlemde çalıştırır ve diğer uygulamalara erişimi kısıtladığınızda, uygulamanız bir bileşeni doğrudan başka bir uygulama. Ancak Android sistemi bunu yapabilir. Bir bileşeni etkinleştirmek için başka bir uygulamada kullanmak üzere amacınızı belirten bir mesajı sisteme belirli bir bileşeni başlatın. Ardından sistem, bileşeni sizin için etkinleştirir.
Bileşenleri etkinleştir
Intent olarak adlandırılan eşzamansız bir mesaj, dört bileşen türünden üçünü etkinleştirir: etkinlikler, hizmetler ve yayın alıcılarına aittir. Intent'ler, çalışma zamanında bağımsız bileşenleri birbirine bağlar. Bunları, yıl içindeki başka bileşenlerden işlem isteğinde bulunan mesajlar geliştirmenize de olanak tanır. veya başka bir uygulamaya ekleyebilirsiniz.
Intent
nesnesiyle bir intent oluşturulur. Bu nesne,
belirli bir bileşeni (açık amaç) veya belirli bir bileşen türünü etkinleştir
(dolaylı amaç).
Etkinlikler ve hizmetler için amaç, gerçekleştirilecek işlemi tanımlar. Örneğin: view veya bir şey gönderebilir ve bilmeniz gerekebilir.
Örneğin, bir intent;
etkinliği kullanabilirsiniz. Bazı durumlarda,
etkinliği gösterilir. Bu durumda aktivite, sonucu almak için
sonuç Intent
içindedir. Ayrıca, sözleşme imzaladığınızda
kullanıcı özel bir kişi seçer ve size geri dönmesini sağlar. Dönüş amacı,
Seçilen kişiyi gösteren URI.
Yayın alıcıları için amaç, duyuruyu yapabilirsiniz. Örneğin, cihazın pilinin zayıf olduğunu belirten bir yayın yalnızca pil seviyesinin düşük olduğunu belirten bilinen bir işlem dizesini içerir.
İçerik sağlayıcılar, etkinliklerin, hizmetlerin ve yayın alıcılarının aksine
ContentResolver
kaynağından gelen bir istekle hedeflendiğinde etkinleştirilir. İçerik
çözümleyici, içerik sağlayıcıyla yapılan tüm doğrudan işlemleri ve bileşen
sağlayıcı arama yöntemleriyle işlem gerçekleştirmek üzere
ContentResolver
nesne algılandı. Bu, güvenlik nedeniyle
bilgi isteyen bileşen tarafından sağlanır.
Her bileşen türünü etkinleştirmek için ayrı yöntemler vardır:
- Bir etkinlik başlatabilir veya yeni bir şey sunmak için
startActivity()
adlı kullanıcıyaIntent
iletiliyor veya etkinliğin bir sonuç döndürmesini istediğinizdestartActivityForResult()
. - Android 5.0 (API düzeyi 21) ve sonraki sürümlerde
İşlemleri planlamak için
JobScheduler
sınıfını kullanın. Önceki Android sürümlerinde: devam eden bir hizmete yeni talimatlar vererek veyastartService()
adlı kullanıcıyaIntent
iletiliyor. HizmeteIntent
ileterek hizmet bağlayabilirsiniz.bindService()
. - Aşağıdaki gibi yöntemlere
Intent
ileterek bir yayın başlatabilirsiniz:sendBroadcast()
veyasendOrderedBroadcast()
. - Şu numarayı arayarak içerik sağlayıcıya sorgu gönderebilirsiniz:
query()
.ContentResolver
cihazında.
Amaçları kullanma hakkında daha fazla bilgi için Amaçlar ve
Amaç Filtreleri belgesini inceleyin.
Aşağıdaki dokümanlarda, belirli bileşenleri etkinleştirme hakkında daha fazla bilgi verilmektedir:
Etkinliklere giriş,
Hizmetlere genel bakış,
BroadcastReceiver
ve
İçerik sağlayıcılar.
Manifest dosyası
Android sisteminin bir uygulama bileşenini başlatabilmesi için öncelikle
bileşenini, uygulamanın manifest dosyasını (AndroidManifest.xml
) okuyarak bulun.
Uygulamanız,
uygulama projesi dizini için geçerlidir.
Manifest'te, uygulamanın bileşenlerini tanımlamanın yanı sıra başka işlemler de yapılmaktadır. Örneğin:
- Uygulamanın gerektirdiği internet erişimi veya okuma erişimine sahip olursunuz.
- Minimum belirtir API düzeyi uygulamanın kullandığı API'lere bağlı olarak uygulama tarafından gerekli kılınan içeriklerdir.
- Uygulamanın kullandığı veya zorunlu kıldığı kamera gibi donanım ve yazılım özelliklerini beyan etme Bluetooth hizmetleri veya çoklu dokunma ekranı.
- Uygulamanın bağlanması gereken API kitaplıklarını tanımlar (Android çerçevesi dışında) API'ler), örneğin Google Haritalar kitaplığı'nda bulabilirsiniz.
Bileşenleri bildirme
Manifestin birincil görevi, sistemi uygulamanın bileşenleri hakkında bilgilendirmektir. Örneğin, Örneğin, bir manifest dosyasında bir etkinliği aşağıdaki şekilde bildirebilirsiniz:
<?xml version="1.0" encoding="utf-8"?> <manifest ... > <application android:icon="@drawable/app_icon.png" ... > <activity android:name="com.example.project.ExampleActivity" android:label="@string/example_label" ... > </activity> ... </application> </manifest>
<application>
içinde
öğesini görürseniz android:icon
özelliği,
uygulamasını indirin.
<activity>
öğesinde,
android:name
özelliği,
Activity
alt sınıf ve
android:label
özelliği bir dize belirtiyor
etkinlik için kullanıcının görebildiği etiket olarak kullanmak üzere.
Aşağıdaki öğeleri kullanarak tüm uygulama bileşenlerini tanımlamanız gerekir:
<activity>
öğe etkinlikler için- Şunun için
<service>
öğeleri: hizmetler <receiver>
öğe yayın alıcıları için<provider>
öğe içerik sağlayıcılar için
Kaynağınıza dahil ettiğiniz ancak bildirmediğiniz etkinlikler, hizmetler ve içerik sağlayıcılar
dosyaları sistem tarafından görülmez ve bu nedenle hiçbir zaman çalıştırılamaz. Ancak,
duyurmak
Alıcılar, manifest dosyasında bildirilebilir veya aşağıdaki gibi kodda dinamik bir şekilde oluşturulabilir:
BroadcastReceiver
.
çağırarak sisteme kaydedilmiş olması gerekir.
registerReceiver()
.
Uygulamanızın manifest dosyasını nasıl yapılandıracağınız hakkında daha fazla bilgi için Uygulama manifestine genel bakış bölümüne bakın.
Bileşen özelliklerini bildirme
Bileşenleri etkinleştirme bölümünde açıklandığı gibi,
Aktiviteleri, hizmetleri ve yayın alıcılarını başlatmak için Intent
.
Şunu yapacaksınız:
Bunun için niyette bileşen sınıf adını kullanarak hedef bileşeni açıkça belirtmeniz gerekir.
Dolaylı intent de kullanabilirsiniz.
yapılması gereken işlemin türünü ve isteğe bağlı olarak,
karar verebilir. Dolaylı intent, sistemin cihazda bir bileşen bulmasını sağlar
başarılı bir şekilde
eyleme dökülebilir.
kullanmak istediğini kullanıcı seçer.
Dikkat: Bir başlangıç yapmak istiyorsanız
Service
, uygulamanızın güvenli olduğundan emin olmak için
uygunsuz
isteyebilirsiniz. Dolaylı intent kullanarak bir hizmeti başlatmak,
emin olamazsınız, çünkü saldırıya hangi hizmetin yanıt vereceğinden emin olamazsınız
ve kullanıcı hangi hizmetin başlatıldığını göremez. Android 5.0 (API düzeyi 21) sürümünden itibaren, sistem
bindService()
öğesini çağırırsanız bir istisna oluşturur
gizli bir niyeti vardır. Hizmetleriniz için intent filtreleri bildirmeyin.
Sistem, bir amaca yönelik yanıt verebilecek bileşenleri, Google Analytics 4'teki diğer uygulamaların manifest dosyasında sağlanan amaç filtrelerine için geçerlidir.
Uygulamanızın manifest dosyasında bir etkinlik beyan ettiğinizde isteğe bağlı olarak aşağıdakileri de ekleyebilirsiniz:
Amaçlara yanıt verebilmek için etkinliğin özelliklerini tanımlayan intent filtreleri
Google Analytics 4'te tarama yapar. Bu işlemi gerçekleştireceğiniz zaman:
Bileşenin bildirim öğesinin alt öğesi olarak bir <intent-filter>
öğesi ekleyerek.
Örneğin, yeni e-posta oluşturma etkinliği olan bir e-posta uygulaması derliyorsanız, "gönder" komutuna yanıt vermek için bir intent filtresi tanımlayın yeni bir e-posta göndermeyi düşünüyor aşağıdaki örnekte gösterildiği gibi:
<manifest ... > ... <application ... > <activity android:name="com.example.project.ComposeEmailActivity"> <intent-filter> <action android:name="android.intent.action.SEND" /> <data android:type="*/*" /> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </activity> </application> </manifest>
Başka bir uygulama ACTION_SEND
işlemi ile bir intent oluşturur ve bunu
startActivity()
,
sistem etkinliğinizi başlatabilir ve böylece kullanıcının bir
e-posta gönderin.
Niyet filtreleri oluşturma hakkında daha fazla bilgi için Amaçlar ve Amaç Filtreleri belgesine bakın.
Uygulama şartlarını beyan etme
Android tarafından desteklenen pek çok farklı cihaz vardır, ancak bunların tümü aynı özellikleri ve olanakları sağlar. Uygulamanızın cihazlara yüklenmesini engellemek için yoksa uygulamanızın ihtiyacı olan özelliklerden yoksun bir profil oluşturmak için uygulamanızda cihaz ve yazılım gereksinimlerini beyan ederek uygulamanızın desteklediği cihaz türlerini manifest dosyası olarak kaydedin.
Bu beyanların çoğu yalnızca bilgilendirme amaçlıdır. Sistem okuma yapmıyor Ancak Google Play gibi harici hizmetler filtreleme sağlamak için bunları okur. uygulama araması yapan kullanıcılara gösterilir.
Örneğin, uygulamanızın bir kamera gerektirdiğini ve Android 8.0'da (API düzeyi 26) kullanıma sunulan API'leri kullandığını varsayalım.
Bu şartları beyan etmeniz gerekir.
minSdkVersion
ve targetSdkVersion
değerleri şurada ayarlandı:
uygulama modülünüzün build.gradle
dosyası:
android { ... defaultConfig { ... minSdkVersion 26 targetSdkVersion 29 } }
Not: minSdkVersion
ve
targetSdkVersion
değeri doğrudan manifest dosyasında
bu izinlerin üzerine yazma işlemi sırasında Gradle tarafından yapılır. Daha fazla bilgi için bkz.
API düzeyi gereksinimlerini belirtin.
Kamera özelliğini uygulamanızın manifest dosyasında beyan etmeniz gerekir:
<manifest ... > <uses-feature android:name="android.hardware.camera.any" android:required="true" /> ... </manifest>
Bu örneklerde gösterilen beyanlarla, olmayan
veya cihazınızda
8.0'dan düşük Android sürümleri, uygulamanızı Google Play'den yükleyemez.
Ancak uygulamanızın kamerayı kullandığını ancak kullanmadığını da beyan edebilirsiniz.
gerektirir. Bunun için required
özelliğini false
olarak ayarlamak için, çalışma zamanında
Kamera olması ve gerektiğinde kamera özelliklerini devre dışı bırakması gerekir.
Uygulamanızın farklı cihazlarla uyumluluğunu nasıl yönetebileceğiniz hakkında daha fazla bilgi Cihaz uyumluluğuna genel bakış başlıklı makalede sağlanmıştır.
Uygulama kaynakları
Android uygulamaları yalnızca bir koddan daha fazla şeyden oluşur. Projeyi tamamlamak için (örneğin, resimler, ses dosyaları ve görsel temsille ilgili her şey) en iyi uygulamaları paylaşacağım. Örneğin, animasyonlar, menüler, stiller, renkler, ve XML dosyalarıyla etkinlik kullanıcı arayüzlerinin düzeni.
Uygulama kaynaklarını kullanmak, kullanarak uygulamanızın çeşitli özelliklerini güncelleyebilirsiniz. Sağlayan alternatif kaynak setleri, uygulamanızı çok çeşitli ürünler için optimize etmenize olanak tanır cihaz yapılandırmalarına (ör. farklı diller ve ekran boyutları) izin verir.
SDK derleme araçları, Android projenize eklediğiniz her kaynak için benzersiz bir
Tam sayı kimliğidir. Bu kimliği, uygulama kodunuzdan veya
XML’de tanımlanan diğer kaynaklar. Örneğin, uygulamanız
logo.png
(res/drawable/
dizinine kaydedilir) ve SDK araçları,
R.drawable.logo
adlı bir kaynak kimliği. Bu kimlik, izin verilen uygulamaya özel bir tam sayı ile eşlenir.
resmi referans olarak kullanabilir ve kullanıcı arayüzünüze ekleyebilirsiniz.
Kaynak kodunuzdan ayrı kaynaklar sağlamanın en önemli yönlerinden biri farklı cihazlar için alternatif kaynaklar sunabilme olanağıdır. yapılandırmanın üç yolu vardır.
Örneğin, XML'de kullanıcı arayüzü dizelerini tanımlayarak,
dizeleri başka
ayrı dosyalara kaydedebilir ve bu dizeleri ayrı dosyalara kaydedebilirsiniz. Daha sonra Android,
uygun dil dizeleri
bir dil niteleyicisine göre kullanıcı arayüzünüze
(örneğin, Fransızca dize için res/values-fr/
) kaynak dizininin adına eklediğiniz
değerlerini ve kullanıcının dil ayarını içerir.
Android, alternatif kaynaklarınız için birçok niteleyiciyi destekler. İlgili içeriği oluşturmak için kullanılan niteleyici, kaynak dizinlerinizin adına eklediğiniz kısa bir dizedir. bu kaynakların kullanıldığı cihaz yapılandırmasını tanımlar.
Örneğin, Örneğin, etkinlikleriniz için duruma göre cihazın ekran yönünü ve boyutunu değiştirebilirsiniz. Cihaz ekranı dikey (uzun) durumdayken dikey olarak düzenlenmiş düğmeleri içeren bir düzen isteyebilirsiniz, ancak yatay (geniş) yönde kullanıyorsanız düğmelerin yatay olarak hizalanmasını isteyebilirsiniz. Düzeni değiştirmek için yöne bağlı olarak, iki düzen tanımlayabilir ve buna uygun niteleyicisine ekler. Ardından, sistem uygun olan düzene sokmanız gerekir.
Başvurunuza dahil edebileceğiniz farklı kaynak türleri ve bunları nasıl Farklı cihaz yapılandırmaları için alternatif kaynaklar oluşturmak istiyorsanız Uygulama kaynaklarına genel bakış başlıklı makaleyi okuyun. Alıcı: en iyi uygulamalar ve sağlam, üretim kalitesinde uygulamalar tasarlama, Uygulama mimarisi kılavuzu'na bakın.
Ek kaynaklar
Videoları ve kod eğiticilerini kullanarak Android geliştirmeyi öğrenmek için Kotlin ile Android Uygulamaları Geliştirme Udacity kursu.
Şununla ilgili haberleri okumaya devam edin:
- Amaçlar ve Amaç Filtreleri
- Aşağıdakileri yapmak için
Intent
API'lerini nasıl kullanacağınızı öğrenin: ve etkinlikler ile hizmetler gibi uygulama bileşenlerini etkinleştirecek ve uygulama bileşenlerinizi nasıl diğer uygulamalar tarafından kullanılabilir. - Etkinliklere giriş
Activity
sınıfının örneğini nasıl oluşturacağınızı öğrenin. Uygulamanızda kullanıcı arayüzüne sahip farklı bir ekran sağlar.- Uygulama kaynaklarına genel bakış
- Android uygulamalarının, uygulama kaynaklarını Belirli bir cihaz için nasıl alternatif kaynaklar sağlayabileceği de dahil olmak üzere uygulama kodu yapılandırmanın üç yolu vardır.
İlgilendiğiniz diğer konular:
- Cihaz uyumluluğuna genel bakış
- Android'in farklı cihaz türlerinde nasıl çalıştığını uygulamanızı her cihaz için nasıl optimize edebileceğiniz veya uygulamanızın kullanılabilirliğini nasıl kısıtlayabileceğiniz farklı cihazlarda kullanabilirsiniz.
- Android'de izinler
- Android'in belirli API'lere uygulama erişimini belirli bir izinle nasıl kısıtladığını öğrenin uygulamanızın söz konusu API'leri kullanması için kullanıcının iznini gerektiren bir sistemdir.