<sağlayıcı>

söz dizimi:
<provider android:authorities="list"
          android:directBootAware=["true" | "false"]
          android:enabled=["true" | "false"]
          android:exported=["true" | "false"]
          android:grantUriPermissions=["true" | "false"]
          android:icon="drawable resource"
          android:initOrder="integer"
          android:intentMatchingFlags=["none" | "enforceIntentFilter" | "allowNullAction"]
          android:label="string resource"
          android:multiprocess=["true" | "false"]
          android:name="string"
          android:permission="string"
          android:process="string"
          android:readPermission="string"
          android:syncable=["true" | "false"]
          android:writePermission="string" >
    ...
</provider>
içinde bulunan:
<application>
Şunları içerebilir:
<meta-data>
<grant-uri-permission>
<intent-filter>
<path-permission>
<property>
description:
İçerik sağlayıcı bileşenini bildirir. İçerik sağlayıcı, ContentProvider sınıfının bir alt sınıfıdır ve uygulama tarafından yönetilen verilere yapılandırılmış erişim sağlar. Uygulamanızdaki tüm içerik sağlayıcılar, manifesto dosyasındaki bir <provider> öğesinde tanımlanmalıdır. Aksi takdirde sistem bunları algılamaz ve çalıştırmaz.

Yalnızca uygulamanızda yer alan içerik sağlayıcıları beyan edin. Uygulamanızda kullandığınız diğer uygulamalarda içerik sağlayıcıları bildirmeyin.

Android sistemi, içerik sağlayıcılarla ilgili referansları sağlayıcının içerik URI'si'sinin bir parçası olan authority dizesine göre depolar. Örneğin, sağlık profesyonelleriyle ilgili bilgileri depolayan bir içerik sağlayıcıya erişmek istediğinizi varsayalım. Bunu yapmak için, sağlayıcıyı tanımlayan bir URI'nin yanı sıra başka bağımsız değişkenler alan ContentResolver.query() yöntemini çağırırsınız:

content://com.example.project.healthcareprovider/nurses/rn

content: Şema, URI'yi bir Android içerik sağlayıcısına yönlendiren bir içerik URI'si olarak tanımlar. Yetkili com.example.project.healthcareprovider, sağlayıcıyı tanımlar. Android sistemi, bilinen sağlayıcılar ve yetkilileri listesinde yetkiliyi arar. nurses/rn alt dizesi, içerik sağlayıcının sağlayıcı verilerinin alt kümelerini tanımlamak için kullandığı bir yoldur.

Sağlayıcınızı <provider> öğesinde tanımlarken android:name bağımsız değişkenine şemayı veya yolu değil, yalnızca yetkiliyi eklersiniz.

İçerik sağlayıcıları kullanma ve geliştirme hakkında bilgi için İçerik sağlayıcılar başlıklı makaleyi inceleyin.

özellikleri:
android:authorities
İçerik sağlayıcı tarafından sunulan verileri tanımlayan bir veya daha fazla URI yetkilisinin listesi. Adlarını noktalı virgülle ayırarak birden fazla yetkiliyi listeleyin. Çakışmaları önlemek için yetkili adlarında Java tarzı bir adlandırma sistemi kullanın. Örneğin, com.example.provider.cartoonprovider. Genellikle, sağlayıcıyı uygulayan ContentProvider alt sınıfının adıdır.

Varsayılan değer yoktur. En az bir yetkili belirtilmelidir.

android:enabled
İçerik sağlayıcının sistem tarafından oluşturulup oluşturulamayacağı. Mümkünse "true", değilse "false" değerini girin. Varsayılan değer "true"'dır.

<application> öğesinin, içerik sağlayıcılar da dahil olmak üzere tüm uygulama bileşenleri için geçerli olan kendi enabled özelliği vardır. İçerik sağlayıcının etkinleştirilmesi için hem <application> hem de <provider> özelliklerinin "true" olması gerekir. Bu özellikler varsayılan olarak "true"'dir. Bunlardan biri "false" ise sağlayıcı devre dışı bırakılır. Örneklenemez.

android:directBootAware

İçerik sağlayıcının Direct-Boot aware olup olmadığı, yani kullanıcının cihazın kilidini açmasından önce çalışıp çalışamayacağı.

Not: Doğrudan başlatma sırasında uygulamanızdaki bir içerik sağlayıcı yalnızca cihaz korumalı depolama alanında saklanan verilere erişebilir.

Varsayılan değer "false"'dır.

android:exported
İçerik sağlayıcının diğer uygulamalar tarafından kullanılıp kullanılamadığı.
  • "true": Sağlayıcı, diğer uygulamalarda kullanılabilir. Herhangi bir uygulama, sağlayıcı için belirtilen izinlere tabi olarak sağlayıcının içerik URI'sini kullanarak içeriğe erişebilir.
  • "false": Sağlayıcı diğer uygulamalarda kullanılamaz. Sağlayıcıya erişimi uygulamalarınızla sınırlamak için android:exported="false"'yı ayarlayın. Yalnızca sağlayıcıyla aynı kullanıcı kimliğine (UID) sahip uygulamalar veya android:grantUriPermissions öğesi aracılığıyla sağlayıcıya geçici olarak erişim izni verilen uygulamalar bu öğeye erişebilir.

Bu özellik API düzeyi 17'de kullanıma sunulduğundan API düzeyi 16 ve daha düşük sürümleri çalıştıran tüm cihazlar, bu özellik "true" olarak ayarlanmış gibi davranır. android:targetSdkVersion değerini 17 veya daha yüksek bir değere ayarlarsanız API düzeyi 17 ve sonraki sürümleri çalıştıran cihazlarda varsayılan değer "false" olur.

android:exported="false" ayarlayabilir ve permission özelliğiyle izinleri ayarlayarak sağlayıcınıza erişimi sınırlayabilirsiniz.

android:grantUriPermissions

Normalde içerik sağlayıcının verilerine erişme izni olmayan kişilere, readPermission, writePermission, permission ve exported özelliklerinin getirdiği kısıtlamayı geçici olarak aşarak bu iznin verilip verilemeyeceği.

İzin verilebiliyorsa "true", verilemiyorsa "false" gösterilir. "true" ise içerik sağlayıcının verilerinin herhangi birine izin verilebilir. "false" değeri belirlenirse izin yalnızca <grant-uri-permission> alt öğelerinde listelenen veri alt kümelerine (varsa) verilebilir. Varsayılan değer "false"'dır.

İzin verme, bir uygulama bileşenine izinle korunan verilere tek seferlik erişim sağlamanın bir yoludur. Örneğin, bir e-posta iletisinde ek olduğunda, içerik sağlayıcının verilerinin tamamına bakmak için genel izni olmasa bile posta uygulaması, eki açmak için uygun görüntüleyiciyi çağırabilir.

Bu gibi durumlarda, bileşeni etkinleştiren Intent nesnesindeki FLAG_GRANT_READ_URI_PERMISSION ve FLAG_GRANT_WRITE_URI_PERMISSION işaretleri tarafından izin verilir. Örneğin, posta uygulaması FLAG_GRANT_READ_URI_PERMISSION değerini Context.startActivity()'ye iletilen Intent içine yerleştirebilir. İzin, Intent içindeki URI'ye özeldir.

Bu özelliği etkinleştirirseniz (bu özelliği "true" olarak ayarlayarak veya <grant-uri-permission> alt öğelerini tanımlayarak) kapsanan bir URI sağlayıcıdan silindiğinde Context.revokeUriPermission() işlevini çağırın.

Ayrıca <grant-uri-permission> öğesine de bakın.

android:icon
İçerik sağlayıcıyı temsil eden bir simge. Bu özellik, resim tanımını içeren drawable kaynağa referans olarak ayarlanır. Ayarlanmamışsa bunun yerine uygulamanın tamamı için belirtilen simge kullanılır. Daha fazla bilgi için <application> öğesinin icon özelliğine bakın.
android:initOrder
İçerik sağlayıcının, aynı işlem tarafından barındırılan diğer içerik sağlayıcılara göre örneklendiği sıra. İçerik sağlayıcılar arasında bağımlılıklar olduğunda bu özelliği her biri için ayarlamak, bunların söz konusu bağımlılıkların gerektirdiği sırada oluşturulmasını sağlar. Değer bir tam sayıdır ve daha yüksek sayılar önce başlatılır.
android:intentMatchingFlags

Sistemin gelen amaçları uygulama bileşenleriyle nasıl eşleştirdiğine ince ayar yapmak için bu özelliği kullanın. Varsayılan olarak özel eşleşme kuralları uygulanmaz.

<provider> etiketinde ayarlanan değer, <application> etiketinde ayarlanan değeri geçersiz kılar.

Değer, "|" ile ayrılmış aşağıdaki işaretlerden biri veya daha fazlası olmalıdır:

İşaret Açıklama
none Gelen amaçlar için tüm özel eşleşme kurallarını devre dışı bırakır. Birden fazla işaret belirtirken çakışan değerler, none işaretine öncelik verilerek çözülür.
enforceIntentFilter

Gelen intent'ler için daha katı eşleşme uygular:

  • Açık amaçlar, hedef bileşenin amaç filtresiyle eşleşmelidir.
  • İşlemi olmayan amaçlar, herhangi bir amaç filtresiyle eşleşmez.
allowNullAction

Eşleşme kurallarını gevşeterek işlem içermeyen niyetlerin eşleşmesine izin verir. Bu işaret, aşağıdaki davranışı elde etmek için enforceIntentFilter ile birlikte kullanılır:

  • Açık amaçlar, hedef bileşenin amaç filtresiyle eşleşmelidir.
  • İşlem içermeyen amaçların herhangi bir amaç filtresiyle eşleşmesine izin verilir.

Daha fazla bilgi için Android 16'daki (API düzeyi 36) davranış değişiklikleri bölümündeki Daha Güvenli Amaçlar'a göz atın.

android:label
Sağlanan içerik için kullanıcı tarafından okunabilir bir etiket. Bu özellik ayarlanmazsa bunun yerine uygulamanın tamamı için ayarlanan etiket kullanılır. Daha fazla bilgi için <application> öğesinin label özelliğine bakın.

Etiket genellikle bir dize kaynağına referans olarak ayarlanır. Böylece, kullanıcı arayüzündeki diğer dizeler gibi yerelleştirilebilir. Ancak uygulamayı geliştirirken kolaylık sağlaması için ham dize olarak da ayarlanabilir.

android:multiprocess
Uygulama birden fazla işlemde çalışıyorsa bu özellik, içerik sağlayıcının birden fazla örneğinin oluşturulup oluşturulmayacağını belirler. "true" ise uygulamanın her işleminin kendi içerik sağlayıcı nesnesi vardır. "false" ise uygulamanın işlemleri yalnızca bir içerik sağlayıcı nesnesi paylaşır. Varsayılan değer "false"'dır.

Bu işareti "true" olarak ayarlamak, işlemler arası iletişimin ek yükünü azaltarak performansı artırabilir ancak her sürecin bellekte kapladığı yeri de artırır.

android:name
İçerik sağlayıcıyı uygulayan sınıfın adı, ContentProvider alt sınıfı. Bu genellikle tam nitelikli bir sınıf adıdır (ör. "com.example.project.TransportationProvider"). Ancak kısa bir yol olarak, adın ilk karakteri nokta ise bu karakter, <manifest> öğesinde belirtilen paket adına eklenir.

Varsayılan değer yoktur. Ad belirtilmelidir.

android:permission

İstemcilerin içerik sağlayıcının verilerini okumak veya yazmak için sahip olması gereken iznin adı. Bu özellik, hem okuma hem de yazma için tek bir izin ayarlamanın kolay bir yoludur. Ancak readPermission, writePermission ve grantUriPermissions özellikleri bu özelliğe göre önceliklidir.

readPermission özelliği de ayarlanmışsa içerik sağlayıcıya sorgu gönderme erişimini kontrol eder. writePermission özelliği ayarlanmışsa sağlayıcının verilerini değiştirme erişimini kontrol eder.

İzinler hakkında daha fazla bilgi için uygulama manifestine genel bakış bölümündeki İzinler ve Güvenlik ipuçları başlıklı makaleleri inceleyin.

android:process

İçerik sağlayıcının çalıştığı sürecin adı. Normalde, bir uygulamanın tüm bileşenleri uygulama için oluşturulan varsayılan süreçte çalışır. Uygulama paketiyle aynı ada sahiptir.

<application> öğesinin process özelliği, tüm bileşenler için farklı bir varsayılan değer ayarlayabilir. Ancak her bileşen, varsayılan değeri kendi process özelliğiyle geçersiz kılabilir. Bu sayede uygulamanızı birden fazla işleme yayabilirsiniz.

Bu özelliğe atanan ad iki nokta üst üste işaretiyle (:) başlıyorsa gerektiğinde uygulamaya özel yeni bir işlem oluşturulur ve etkinlik bu işlemde çalışır.

İşlem adı küçük harfle başlıyorsa etkinlik, bu ada sahip genel bir işlemde çalışır (bunun için gerekli izne sahip olması koşuluyla). Bu sayede farklı uygulamalardaki bileşenler bir işlemi paylaşabilir ve kaynak kullanımı azaltılabilir.

android:readPermission

İstemcilerin içerik sağlayıcıya sorgu göndermek için sahip olması gereken izin.

Sağlayıcı android:grantUriPermissions değerini "true" olarak ayarlarsa veya belirli bir istemci <grant-uri-permission> alt öğesinin koşullarını karşılarsa istemci, içerik sağlayıcının verilerine geçici okuma erişimi kazanabilir.

Ayrıca permission ve writePermission özelliklerine de bakın.

android:syncable
İçerik sağlayıcının kontrolündeki verilerin bir sunucudaki verilerle senkronize edilip edilemeyeceği. Mümkünse "true", değilse "false".
android:writePermission

Müşterilerin, içerik sağlayıcı tarafından kontrol edilen verilerde değişiklik yapması için gereken izin.

Sağlayıcı android:grantUriPermissions değerini "true" olarak ayarlarsa veya belirli bir istemci <grant-uri-permission> alt öğesinin koşullarını karşılarsa istemci, içerik sağlayıcının verilerini değiştirmek için geçici yazma erişimi kazanabilir.

Ayrıca permission ve readPermission özelliklerine de bakın.

Tanıtıldığı oyun:
API düzeyi 1
Ayrıca:
İçerik sağlayıcılar