Android 11, kullanıcılara konum, mikrofon ve kamera için daha ayrıntılı izinler belirleme olanağı tanır. Ayrıca sistem, Android 11 veya sonraki sürümleri hedefleyen kullanılmayan uygulamaların izinlerini sıfırlar. Sistem uyarı penceresini kullanan ya da telefon numaralarıyla ilgili bilgileri okuyan uygulamaların, beyan ettikleri izinleri güncellemesi gerekebilir.
Tek seferlik izinler
Android 11'den itibaren uygulamanız konum, mikrofon veya kamerayla ilgili bir izin istediğinde kullanıcıya gösterilen izin iletişim kutusunda Yalnızca bu sefer adlı bir seçenek bulunur. Kullanıcı bu seçeneği iletişim kutusunda 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ırlama
Uygulamanız Android 11 veya sonraki sürümleri hedefliyorsa ve birkaç aydır kullanılmıyorsa 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şlem, 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ı etkiye sahiptir. Uygulamanız çalışma zamanında izin isteme ile ilgili en iyi uygulamalara uyuyorsa uygulamanızda herhangi bir değişiklik yapmanız gerekmez. Bunun nedeni, kullanıcı uygulamanızdaki özelliklerle etkileşimde bulundukça özelliklerin ihtiyaç duyduğu izinlere sahip olup olmadığını doğrulamanız gerektiğidir.
Sistemin kullanılmayan uygulamaların izinlerini otomatik olarak nasıl sıfırladığı hakkında daha fazla bilgi edinin.
İzin iletişim kutusunun görünürlüğü
Android 11'den itibaren, uygulamanızın bir cihazda yüklü kaldığı süre boyunca kullanıcı belirli bir izin için birden fazla kez Reddet'e dokunursa uygulamanız bu izni tekrar istediğinde sistem izinleri iletişim kutusu gösterilmez. Kullanıcının işlemi "bir daha sorma" anlamına gelir. Önceki sürümlerde, kullanıcı daha önce "Bir daha sorma" onay kutusunu veya seçeneğini işaretlemediyse uygulamanız her izin istediğinde sistem izinleri iletişim kutusu gösteriliyordu. Android 11'deki bu davranış değişikliği, kullanıcıların reddetmeyi seçtiği izinler için tekrar tekrar istekte bulunulmasını engeller.
Bir uygulamanın izinlerinin 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
Buradaki PACKAGE_NAME, incelenecek paketin adıdır.
Komutun çıktısı, 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
ile işaretlenir.
Reddet seçeneği iki kez tıklanarak kalıcı olarak reddedilen izinler USER_FIXED
ile işaretlenir.
Test sırasında, istek iletişim kutusu gösterilmediğinde test kullanıcılarının şaşırmaması için bu işaretleri sıfırlamak isteyebilirsiniz. Bunu yapmak 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 izinler API'si referans sayfasını ziyaret edin.
Uygulamanızda izin reddini işleme hakkında daha fazla bilgi edinin.
Sistem uyarı penceresi değişiklikleri
Android 11, uygulamalara SYSTEM_ALERT_WINDOW
izni verilme şekliyle ilgili çeşitli değişiklikler yapar. Bu değişiklikler, izin verme işlemini daha bilinçli hale getirerek kullanıcıları korumayı amaçlamaktadır.
Belirli uygulamalara, istek üzerine SYSTEM_ALERT_WINDOW izni otomatik olarak verilir.
Belirli uygulama sınıflarına, istek üzerine otomatik olarak SYSTEM_ALERT_WINDOW
izni verilir:
ROLE_CALL_SCREENING
olan veSYSTEM_ALERT_WINDOW
isteyen tüm uygulamalara otomatik olarak izin verilir. UygulamaROLE_CALL_SCREENING
özelliğini kaybederse izni de kaybeder.MediaProjection
aracılığıyla ekranı yakalayan veSYSTEM_ALERT_WINDOW
isteyen tüm uygulamalara, kullanıcı uygulamaya izni açıkça reddetmediği sürece otomatik olarak izin verilir. Uygulama ekranı yakalamayı durdurduğunda izni kaybeder. Bu kullanım alanı öncelikli olarak oyun canlı yayın uygulamaları için tasarlanmıştır.
Bu uygulamaların SYSTEM_ALERT_WINDOW
iznini almak için ACTION_MANAGE_OVERLAY_PERMISSION
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 yönlendirir
Android 11'den itibaren,
ACTION_MANAGE_OVERLAY_PERMISSION
amaçlar her zaman kullanıcıyı üst düzey Ayarlar ekranına getirir. Kullanıcı bu ekranda uygulamalar için SYSTEM_ALERT_WINDOW
izinleri verebilir veya iptal edebilir. Niyetteki tüm package:
verileri yoksayılır.
Android'in önceki sürümlerinde ACTION_MANAGE_OVERLAY_PERMISSION
amacı bir paketi belirtebiliyordu. Bu da kullanıcıyı, izni yönetmek için uygulamaya özel bir ekrana yönlendiriyordu. Bu işlev, Android 11'den itibaren desteklenmemektedir. Bunun yerine, kullanıcının önce izin vermek veya izni iptal etmek istediği uygulamayı seçmesi gerekir. Bu değişiklik, izin verme işlemini daha bilinçli hale getirerek kullanıcıları korumayı amaçlamaktadı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 sürümleri hedefliyorsa ve aşağıdaki listede gösterilen telefon numarası API'lerine erişmesi gerekiyorsa READ_PHONE_STATE
izni yerine READ_PHONE_NUMBERS
izni istemeniz gerekir.
- Hem
TelephonyManager
sınıfındaki hem deTelecomManager
sınıfındakigetLine1Number()
yöntemi. TelephonyManager
sınıfındaki desteklenmeyengetMsisdn()
yöntemi.
Uygulamanız, önceki listedekiler dışında yöntemler çağırmak için READ_PHONE_STATE
beyan ediyorsa tüm Android sürümlerinde READ_PHONE_STATE
istemeye devam edebilirsiniz. Ancak READ_PHONE_STATE
iznini yalnızca önceki listedeki yöntemler için kullanıyorsanız manifest dosyanızı aşağıdaki şekilde güncelleyin:
READ_PHONE_STATE
beyanınızı, uygulamanızın izni yalnızca Android 10 (API düzeyi 29) ve önceki sürümlerde kullanacak şekilde değiştirin.READ_PHONE_NUMBERS
iznini ekleyin.
Aşağıdaki manifest beyanı snippet'i bu süreci gösterir:
<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 izin değişiklikleri hakkında daha fazla bilgi için aşağıdaki materyallere göz atın:
Videolar
Android 11'deki en son gizlilik değişiklikleriyle geliştirme