Android 11, kullanıcılara konum, mikrofon ve kamera için daha ayrıntılı izinler verme olanağı sunar. Buna ek olarak, sistem, Android 11 veya sonraki sürümleri hedefleyen kullanılmayan uygulamaların izinlerini sıfırlar ve uygulamaların, sistem uyarı penceresini kullanmaları veya telefon numaralarıyla ilgili bilgileri okumaları durumunda beyan ettikleri izinleri güncellemeleri gerekebilir.
Tek seferlik izinler
Android 11'den itibaren uygulamanız konum, mikrofon veya kamerayla ilgili bir izin istediğinde, kullanıcıya yönelik izinler iletişim kutusunda Yalnızca bu sefer adlı bir seçenek bulunur. Kullanıcı, iletişim kutusunda bu seçeneği belirlerse uygulamanıza geçici bir tek seferlik izin verilir.
Sistemin tek seferlik izinleri nasıl işlediği hakkında daha fazla bilgi edinin.
Kullanılmayan uygulamaların izinlerini otomatik olarak sıfırla
Uygulamanız Android 11 veya sonraki bir sürümü hedefliyorsa ve birkaç aydır kullanılmazsa sistem, kullanıcının uygulamanıza verdiği hassas çalışma zamanı izinlerini otomatik olarak sıfırlayarak kullanıcı verilerini korur. Bu işlemin etkisi, kullanıcının sistem ayarlarında bir izni görüntüleyip uygulamanızın erişim düzeyini Reddet olarak değiştirmesiyle aynıdır. Uygulamanız çalışma zamanında izin isteme ile ilgili en iyi uygulamaları takip ediyorsa uygulamanızda herhangi bir değişiklik yapmanız gerekmez. Bunun nedeni, kullanıcı uygulamanızdaki özelliklerle etkileşime girdikçe özelliklerin ihtiyaç duyduğu izinlere sahip olduğunu doğrulamanız gerekir.
Sistemin kullanılmayan uygulamaların izinlerini otomatik olarak nasıl sıfırladığı hakkında daha fazla bilgi edinin.
İzin iletişim kutusu görünürlüğü
Android 11'den itibaren, uygulamanızın bir cihazda yüklü olduğu süre boyunca kullanıcı belirli bir izin için Reddet'e bir defadan fazla dokunursa uygulamanız bu izni tekrar isterse kullanıcı, sistem izinleri iletişim kutusunu görmez. Kullanıcının yaptığı işlem "bir daha sorma" anlamına gelir. Önceki sürümlerde, kullanıcılar daha önce "bir daha sorma" onay kutusunu veya seçeneğini belirlemediği sürece uygulamanız her izin istediğinde sistem izinleri iletişim kutusunu görüyorlardı. Android 11'deki bu davranış değişikliği, kullanıcıların izin vermeyi reddettiği izin isteklerinin tekrarlanmasını önler.
Bir uygulamaya izinlerin kalıcı olarak reddedilip reddedilmediğini belirlemek için (hata ayıklama ve test amacıyla) aşağıdaki komutu kullanın:
adb shell dumpsys package PACKAGE_NAME
Burada PACKAGE_NAME, incelenecek paketin adıdır.
Komutun çıkışı aşağıdaki gibi bölümler içerir:
... runtime permissions: android.permission.POST_NOTIFICATIONS: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.ACCESS_FINE_LOCATION: granted=false, flags=[ USER_SET|USER_FIXED|USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] android.permission.BLUETOOTH_CONNECT: granted=false, flags=[ USER_SENSITIVE_WHEN_GRANTED|USER_SENSITIVE_WHEN_DENIED] ...
Kullanıcı tarafından bir kez reddedilen izinler USER_SET
tarafından işaretlenir.
İki kez Reddet seçilerek kalıcı olarak reddedilen izinler USER_FIXED
tarafından işaretlenir.
İstek iletişim kutusu gösterilmediğinde test kullanıcılarının şaşırmamaları için test sırasında bu işaretleri sıfırlamak isteyebilirsiniz. Bunun için şu komutu kullanın:
adb shell pm clear-permission-flags PACKAGE_NAME PERMISSION_NAME user-set user-fixed
PERMISSION_NAME, sıfırlamak istediğiniz iznin adıdır. Android uygulama izinlerinin tam listesini görüntülemek için permissions API referans sayfasını ziyaret edin.
Uygulamanızda reddedilen izinlerin nasıl ele alınacağı hakkında daha fazla bilgi edinin.
Sistem uyarı penceresi değişiklikleri
Android 11, uygulamalara SYSTEM_ALERT_WINDOW
izninin verilme biçiminde birkaç değişiklik yapar. Bu değişikliklerin amacı, izni daha bilinçli bir şekilde vererek kullanıcıları korumaktır.
İstek üzerine belirli uygulamalara otomatik olarak SYSTEM_ALERT_WINDOW izni verilir
Belirli uygulama sınıflarına, talep edilmesi halinde otomatik olarak SYSTEM_ALERT_WINDOW
izni verilir:
ROLE_CALL_SCREENING
içeren veSYSTEM_ALERT_WINDOW
isteğinde bulunan tüm uygulamalara otomatik olarak izin verilir. Uygulama,ROLE_CALL_SCREENING
iznini kaybederse izni kaybeder.Ekranı
MediaProjection
aracılığıyla yakalayan veSYSTEM_ALERT_WINDOW
isteğinde bulunan tüm uygulamalara, kullanıcı uygulama iznini açıkça reddetmediği sürece otomatik olarak izin verilir. Uygulama ekranı yakalamayı durdurduğunda izni kaybeder. Bu kullanım alanı öncelikle oyun canlı yayını uygulamaları içindir.
Bu uygulamaların, SYSTEM_ALERT_WINDOW
iznini almak için ACTION_MANAGE_OVERLAY_PERMISSION
etiketini göndermesi gerekmez. Uygulamalar doğrudan SYSTEM_ALERT_WINDOW
isteğinde bulunabilir.
MANAGE_OVERLAY_PERMISSION amaçları, kullanıcıyı her zaman sistem izinleri ekranına getirir
Android 11'den itibaren ACTION_MANAGE_OVERLAY_PERMISSION
amaçları, kullanıcıyı her zaman en üst düzey Ayarlar ekranına götürür. Burada kullanıcı, uygulamalar için SYSTEM_ALERT_WINDOW
izinlerini verebilir veya iptal edebilir. Amaçtaki package:
verileri yoksayılır.
Android'in önceki sürümlerinde ACTION_MANAGE_OVERLAY_PERMISSION
amacı bir paket belirtebiliyordu. Bu da kullanıcıyı izni yönetmek için uygulamaya özel bir ekrana götürecekti. Bu işlev Android 11'den itibaren
desteklenmemektedir. Bunun yerine, kullanıcının önce izin vermek istediği uygulamayı seçmesi veya
izini iptal etmesi gerekir. Bu değişikliğin amacı, izin vermeyi daha bilinçli bir şekilde
yaparak kullanıcıları korumaktır.
Telefon numaraları
Android 11, uygulamanızın telefon numaralarını okurken kullandığı telefonla ilgili izni değiştirir.
Uygulamanız Android 11 veya sonraki bir sürümü hedefliyorsa ve aşağıdaki listede gösterilen telefon numarası API'lerine erişmesi gerekiyorsa READ_PHONE_STATE
izni yerine READ_PHONE_NUMBERS
iznini istemelisiniz.
- Hem
TelephonyManager
hem deTelecomManager
sınıfındakigetLine1Number()
yöntemi. TelephonyManager
sınıfında desteklenmeyengetMsisdn()
yöntemi.
Uygulamanız, READ_PHONE_STATE
uygulamasının önceki listede bulunanlar dışındaki yöntemleri çağırdığını beyan ederse tüm Android sürümlerinde READ_PHONE_STATE
isteğinde bulunmaya devam edebilirsiniz. Ancak READ_PHONE_STATE
iznini yalnızca önceki listede yer alan yöntemler için kullanıyorsanız manifest dosyanızı aşağıdaki gibi güncelleyin:
- Uygulamanızın izni yalnızca Android 10 (API düzeyi 29) ve önceki sürümlerde kullanması için
READ_PHONE_STATE
beyanınızı değiştirin. READ_PHONE_NUMBERS
iznini ekleyin.
Aşağıdaki manifest bildirim snippet'inde bu işlem gösterilmektedir:
<manifest> <!-- Grants the READ_PHONE_STATE permission only on devices that run Android 10 (API level 29) and lower. --> <uses-permission android:name="android.permission.READ_PHONE_STATE" android:maxSdkVersion="29" /> <uses-permission android:name="android.permission.READ_PHONE_NUMBERS" /> </manifest>
Ek kaynaklar
Android 11'deki izinlerde yapılan değişiklikler hakkında daha fazla bilgi için aşağıdaki materyalleri inceleyin:
Videolar
Android 11'deki en son gizlilik değişiklikleriyle geliyor