Google 致力于为黑人社区推动种族平等。查看具体举措
Bu sayfa, Cloud Translation API ile çevrilmiştir.
Switch to English

Çalışma Zamanı İzinleri

Android 6.0 ve sonraki sürümlerde, Android uygulama izinleri modeli, izinleri kullanıcılar için daha anlaşılır, kullanışlı ve daha güvenli hale getirmek için tasarlanmıştır. Model, tehlikeli izinler gerektiren Android uygulamalarını (bkz. Etkilenen izinler ) bir yükleme zamanı izin modelinden bir çalışma zamanı izin modeline taşıdı:

  • Yükleme zamanı izinleri

    ( Android 5.1 ve önceki sürümler ) Kullanıcılar, uygulamayı yüklediklerinde veya güncellediklerinde bir uygulamaya tehlikeli izinler verir. Cihaz üreticileri ve operatörler, önceden verilmiş izinlere sahip uygulamaları kullanıcıyı bilgilendirmeden önceden yükleyebilir.

  • Çalışma zamanı izinleri

    ( Android 6.0 - 9 ) Kullanıcılar, uygulama çalışırken bir uygulamaya tehlikeli izinler verir. İzinlerin ne zaman istendiği (örneğin, uygulamanın ne zaman başlatıldığı veya kullanıcının belirli bir özelliğe eriştiği zaman) uygulamaya bağlıdır, ancak kullanıcı, belirli izin gruplarına uygulama erişimi verir / reddeder. OEM'ler / operatörler uygulamaları önceden yükleyebilir, ancak istisna sürecinden geçmedikçe izinleri önceden veremezler. (Bkz. İstisnalar oluşturma .)

    ( Android 10 ) Kullanıcılar artan şeffaflık görür ve hangi uygulamaların etkinlik tanıma (AR) çalışma zamanı izinlerine sahip olduğunu kontrol eder. Kullanıcılardan, çalışma zamanı izinleri iletişim kutusu tarafından izinleri her zaman izin vermeleri, kullanımdayken izin vermeleri veya reddetmeleri istenir. Android 10'a bir işletim sistemi yükseltmesinde, uygulamalara verilen izinler korunur, ancak kullanıcılar Ayarlar'a gidip bunları değiştirebilir.

Çalışma zamanı izinleri, uygulamaların bir kullanıcının izni olmadan özel verilere erişmesini engeller ve onlara, uygulamaların aradığı veya verilmiş izin türleri hakkında ek bağlam ve görünürlük sağlar. Çalışma zamanı modeli, geliştiricileri, kullanıcıların uygulamaların neden istenen izinleri gerektirdiğini anlamalarına yardımcı olmaya teşvik eder ve kullanıcıların bunları verme veya reddetme konusunda daha iyi kararlar alabilmeleri için daha fazla şeffaflık sağlar.

Etkilenen izinler

Android 6.0 ve sonraki sürümler, bir çalışma zamanı izin modelini kullanmak için tehlikeli izinler gerektirir. Tehlikeli izinler, talep eden uygulamalara özel kullanıcı verilerine erişim izni veren veya kullanıcıyı olumsuz yönde etkileyebilecek bir cihaz üzerinde kontrol sağlayan yüksek riskli izinlerdir ( READ_CALENDAR gibi). Tehlikeli izinlerin bir listesini görüntülemek için şu komutu çalıştırın:

adb shell pm list permissions -g -d

Android 6.0 ve sonraki sürümler, normal izinlerin davranışını değiştirmez. Bunlar, normal, sistem ve imza izinleri dahil tehlikeli olmayan izinlerdir. Normal izinler, talep eden uygulamalara diğer uygulamalar, sistem veya kullanıcı için minimum riskle yalıtılmış uygulama düzeyindeki özelliklere erişim izni veren düşük riskli izinlerdir ( SET_WALLPAPER gibi). Android 5.1 ve daha düşük sürümlerde olduğu gibi, sistem yükleme sırasında talepte bulunan bir uygulamaya otomatik olarak normal izinler verir ve kullanıcıdan onay istemez. İzinlerle ilgili ayrıntılar için <izin> öğesi belgelerine bakın.

Android 10'da katı ve yumuşak kısıtlamalar

Tehlikeli olmasının yanı sıra, bir izin ya katı sınırlamalı ya da yazılımla sınırlandırılmış olabilir. Her iki durumda da, kısıtlı izin de beyaz listeye alınmalıdır. Beyaz listede olmayan katı kısıtlamalar, beyaz listede olmayan esnek kısıtlamalardan farklı davranır:

  • ( Katı kısıtlamalar ) Beyaz listede olmayan uygulamalara izin verilemez.
  • ( Esnek kısıtlamalar ) Beyaz listeye alınmayan uygulamalar, talep ettikleri özel izne göre davranır. Davranış, istenen izin için genel belgelerde açıklanmıştır.

Bir uygulamayı yüklerken, yükleyici (Google Play Store gibi), uygulama için kısıtlanmış izinleri beyaz listeye almamayı seçebilir. İzinler platform tarafından kısıtlanır ve yalnızca bir uygulama platform politikasına göre özel kriterleri karşılıyorsa verilebilir. Kesin kısıtlanmış izin türlerine örnek olarak SMS ve Arama Kaydı izinleri dahildir.

Beyaz liste, yükleme sırasında ve ne zaman gerçekleşir

  • Android 9'dan 10'a yükseltme sırasında bir uygulama zaten yüklüdür.
  • bir izin önceden verilmiş veya bir uygulama önceden yüklenmiş.
  • İzni beyaz listeye eklemek için önceden tanımlanmış bir rol için bir izin gereklidir.
  • yükleyici (Google Play Store gibi), izni beyaz listede olarak işaretler.

Kullanıcılar izinleri manuel olarak beyaz listeye ekleyemez.

Gereksinimler

Çalışma zamanı izin modeli, kurulum işleminin bir parçası olarak cihaza teslim edilen önceden yüklenmiş uygulamalar ve uygulamalar dahil tüm uygulamalar için geçerlidir. Uygulama yazılımı gereksinimleri şunları içerir:

  • Çalışma zamanı izin modeli, Android 6.0 ve sonraki sürümleri çalıştıran tüm cihazlarda tutarlı olmalıdır. Bu, Android Uyumluluk Test Paketi (CTS) testleri tarafından zorunlu kılınmıştır.
  • Uygulamalar, kullanıcılardan çalışma zamanında uygulama izinleri vermelerini istemelidir. Ayrıntılar için bkz. Uygulamaları güncelleme . Cihazın beklenen çalışması için temel cihaz işlevselliği sağlayan varsayılan uygulamalara ve işleyicilere sınırlı istisnalar verilebilir. (Örneğin, aygıtın ACTION_CALL işlemine yönelik varsayılan Çevirici uygulamasında Telefon izni erişimi olabilir.) Ayrıntılar için bkz. İstisnalar oluşturma .
  • Tehlikeli izinlere sahip önceden yüklenmiş uygulamalar API düzey 23'ü hedeflemeli ve çalışma zamanı izin modelini korumalıdır. Diğer bir deyişle, uygulama yüklemesi sırasındaki kullanıcı arabirimi akışı, PermissionController'ın AOSP uygulamasından sapmamalıdır, kullanıcılar önceden yüklenmiş uygulamaların tehlikeli izinlerini iptal edebilir vb.
  • Başsız uygulamalar, izin istemek veya bir UID'yi gerekli izinlere sahip başka bir uygulama ile paylaşmak için bir etkinlik kullanmalıdır. Ayrıntılar için bkz. Başsız uygulamalar .

İzinlerin taşınması

Android 5.x üzerindeki uygulamalara verilen izinler, Android 6.0 veya sonraki bir sürüme güncellendikten sonra da verilir, ancak kullanıcılar bu izinleri istedikleri zaman iptal edebilir.

Android 9'dan 10'a güncellemede, tüm katı kısıtlanmış izinler beyaz listeye alınır. Ön plan / arka plan bölme izinlerinin uygulanmasına ilişkin ayrıntılar için Arka plan konumu iste ile başlayan Android 10 gizlilik değişikliği bölümüne bakın.

Entegrasyon

Android 6.0 ve sonraki sürümler için uygulama çalışma zamanı izinleri modelini entegre ederken, önceden yüklenmiş uygulamaları yeni modelle çalışacak şekilde güncellemeniz gerekir. Ayrıca, temel işlevler için varsayılan işleyiciler / sağlayıcılar olan uygulamalar için istisnalar tanımlayabilir, özel izinler tanımlayabilir ve PermissionController uygulamasında kullanılan temayı özelleştirebilirsiniz.

Uygulamaları güncelleme

Sistem görüntüsündeki uygulamalar ve önceden yüklenmiş uygulamalar otomatik olarak önceden belirlenmiş izinler değildir. Geliştirici yönergelerini kullanarak gerekli uygulama değişikliklerini yapmak için önceden yüklenmiş uygulama geliştiricileriyle (OEM, operatör ve üçüncü taraf) birlikte çalışmanızı öneririz. Özellikle, kullanıcılar izinleri iptal ettiğinde çökmeleri ve diğer sorunları önlemek için önceden yüklenmiş uygulamaların değiştirildiğinden emin olmalısınız.

Önceden yüklenmiş uygulamalar

Android 9 ve önceki sürümlerde, tehlikeli izinler kullanan önceden yüklenmiş uygulamalar API düzeyi 23 veya üzerini hedeflemeli ve Android 6.0 ve daha yüksek AOSP izin modelini korumalıdır. Örneğin, bir uygulama kurulumu sırasında kullanıcı arabirimi akışı, PermissionController AOSP uygulamasından sapmamalıdır. Kullanıcılar, önceden yüklenmiş uygulamaların tehlikeli izinlerini bile iptal edebilir.

Android 6.0 ile 9 arası sürümlerde, yükleme akışı sırasında bazı izinler verilir. Ancak, 10'dan başlayarak, yükleme akışı ( Package Installer uygulaması tarafından gerçekleştirilir) izinlerin verilmesinden ayrı bir işlevdir ( Permission Controller uygulamasında).

Başsız uygulamalar

Yalnızca etkinlikler izin isteyebilir. Hizmetler doğrudan izin isteyemez.

  • Android 5.1 ve önceki sürümlerde, başsız uygulamalar kurulduğunda veya bir etkinlik kullanılmadan önceden yüklenmişse izin isteyebilir.
  • Android 6.0 ve sonraki sürümlerde, başsız uygulamaların izin istemek için aşağıdaki yöntemlerden birini kullanması gerekir:
    • İzin istemek için bir aktivite ekleyin. (Bu tercih edilen yöntemdir.)
    • Bir UID'yi gerekli izinlere sahip başka bir uygulama ile paylaşın. Bu yöntemi yalnızca platforma birden çok APK'yi tek bir uygulama olarak işlemek için ihtiyaç duyduğunuzda kullanın.

Amaç, kullanıcıların bağlam dışı görünen izin istekleriyle karıştırılmasını önlemektir.

PackageInstaller kullanıcı arayüzünü özelleştirme

İsterseniz, PackageInstaller tarafından kullanılan varsayılan cihaz temalarını ( Theme.DeviceDefault.Settings ve Theme.DeviceDefault.Light.Dialog.NoActionBar ) güncelleyerek İzinler UI temasını özelleştirebilirsiniz. Ancak, uygulama geliştiricileri için tutarlılık kritik önem taşıdığından, İzin Kullanıcı Arayüzünün ne zaman görüneceğine ilişkin yerleşimi, konumu ve kuralları özelleştiremezsiniz.

Ek diller için dizeleri eklemek için AOSP için dizeleri katkıda bulunur.

İstisnalar oluşturma

PackageManager'daki DefaultPermissionGrantPolicy.java sınıfını kullanarak, temel işletim sistemi işlevselliği için varsayılan işleyiciler veya sağlayıcılar olan uygulamalara önceden izin verebilirsiniz. Örnekler:

ACTION_CALL (Dialer) Default
Phone, Contacts, SMS, Microphone
SMS_DELIVER_ACTION (SMS/MMS) Default
Phone, Contacts, SMS

Özel izinleri tanımlama

Özel izinleri ve grupları normal veya tehlikeli olarak tanımlayabilir ve Android 5.x ve önceki sürümlerde olduğu gibi mevcut izin gruplarına OEM / Taşıyıcıya özgü izinler ekleyebilirsiniz.

Android 6.0 ve sonraki sürümlerde, yeni bir tehlikeli izin eklerseniz, bu izin diğer tehlikeli izinlerle aynı şekilde işlenmelidir (uygulama çalışma sırasında istenir ve kullanıcılar tarafından iptal edilebilir). Özellikle:

  • Mevcut bir gruba yeni izinler ekleyebilirsiniz, ancak tehlikeli izinlerin ve tehlikeli izin gruplarının AOSP eşlemesini değiştiremezsiniz. (Başka bir deyişle, bir gruptan bir izni kaldıramaz ve başka bir gruba atayamazsınız).
  • Cihazda yüklü uygulamalara yeni izin grupları ekleyebilirsiniz, ancak platform bildirimine yeni izin grupları ekleyemezsiniz.

İzinleri test etme

Android, bireysel izinlerin doğru gruplarla eşlendiğini doğrulayan Uyumluluk Test Paketi (CTS) testleri içerir. Bu testleri geçmek, Android 6.0 ve sonraki CTS uyumluluğu için bir gerekliliktir.