Uygulamayla ilgili temel bilgiler

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 fazla Activity 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'ni Service 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 bir Intent nesnesi olarak sunulur. Daha fazla bilgi için BroadcastReceiver 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ıya Intent iletiliyor veya etkinliğin bir sonuç döndürmesini istediğinizde startActivityForResult().
  • 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 veya startService() adlı kullanıcıya Intent iletiliyor. Hizmete Intent ileterek hizmet bağlayabilirsiniz. bindService().
  • Aşağıdaki gibi yöntemlere Intent ileterek bir yayın başlatabilirsiniz: sendBroadcast() veya sendOrderedBroadcast().
  • Ş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:

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.