Uygulama izinleri, aşağıdakilere erişimi koruyarak kullanıcı gizliliğini desteklemeye yardımcı olur:
- Sistem durumu ve kullanıcıların iletişim bilgileri gibi kısıtlanmış veriler
- Eşlenen bir cihaza bağlanma ve ses kaydı yapma gibi kısıtlanmış işlemler
Bu sayfada, izinleri kullanmaya yönelik üst düzey bir iş akışı, farklı izin türlerinin açıklamaları ve uygulamanızda izinleri kullanmayla ilgili bazı en iyi uygulamalar da dahil olmak üzere Android izinlerinin işleyişine genel bir bakış sunulmaktadır. Diğer sayfalarda ise uygulamanızın izin isteklerini en aza indirme, izinleri beyan etme, çalışma zamanında izin isteme ve diğer uygulamaların uygulamanızın bileşenleriyle etkileşim şeklini kısıtlama hakkında bilgi verilmektedir.
Android uygulama izinlerinin tam listesini görüntülemek için izinler API referans sayfasını ziyaret edin.
İzinler iş akışını gösteren bazı örnek uygulamaları görüntülemek için GitHub'daki Android izinleri örnek deposunu ziyaret edin.
İzinleri kullanma iş akışı
Uygulamanız, kısıtlanmış verilere veya kısıtlanmış işlemlere erişim gerektirebilecek işlevler sunuyorsa izinleri belirtmenize gerek kalmadan bilgileri alıp alamayacağınızı veya işlemleri yapıp yapamayacağınızı belirleyin. Uygulamanızda herhangi bir izin beyan etmeden fotoğraf çekme, medya oynatmayı duraklatma ve alakalı reklamlar gösterme gibi birçok kullanım alanını karşılayabilirsiniz.
Uygulamanızın bir kullanım alanını karşılamak için kısıtlanmış verilere erişmesi veya kısıtlanmış işlemler yapması gerektiğine karar verirseniz uygun izinleri beyan edin. Yükleme sırasındaki izinler olarak bilinen bazı izinler, uygulamanız yüklendiğinde otomatik olarak verilir. Çalışma zamanında izinler olarak bilinen diğer izinler, uygulamanızın bir adım daha ileri gidip çalışma zamanında izin istemesini gerektirir.
Şekil 1'de uygulama izinlerinin kullanımıyla ilgili iş akışı gösterilmektedir:
İzin türleri
Android, izinleri yükleme zamanı izinleri, çalışma zamanı izinleri ve özel izinler gibi farklı türlere ayırır. Her iznin türü, sistem uygulamanıza bu izni verdiğinde uygulamanızın erişebileceği kısıtlanmış verilerin kapsamını ve uygulamanızın gerçekleştirebileceği kısıtlanmış işlemlerin kapsamını belirtir. Her iznin koruma düzeyi, türüne bağlıdır ve permissions API referans sayfasında gösterilir.
Yükleme zamanı izinleri
Yükleme sırasındaki izinler, uygulamanıza kısıtlanmış verilere sınırlı erişim sağlar veya uygulamanızın sistemi ya da diğer uygulamaları minimum düzeyde etkileyen kısıtlanmış işlemler gerçekleştirmesine olanak tanır. Uygulamanızda yükleme sırasında istenen izinleri beyan ettiğinizde uygulama mağazası, kullanıcı bir uygulamanın ayrıntılar sayfasını görüntülediğinde yükleme sırasında istenen izin bildirimini gösterir (Şekil 2'de gösterilmiştir). Kullanıcı uygulamanızı yüklediğinde sistem, uygulamanıza otomatik olarak izin verir.
Android, normal izinler ve imza izinleri dahil olmak üzere yükleme sırasındaki izinlerin çeşitli alt türlerini içerir.
Normal izinler
Bu izinler, uygulamanızın korumalı alanından daha geniş kapsamlı verilere ve işlemlere erişim sağlar ancak kullanıcı gizliliği ve diğer uygulamaların çalışması açısından çok az risk taşır.
Sistem, normal izinlere normal
koruma düzeyini atar.
İmza izinleri
Sistem, bir uygulamaya yalnızca uygulama veya izni tanımlayan işletim sistemiyle aynı sertifika tarafından imzalandığı zaman imza izni verir.
Otomatik doldurma veya VPN hizmetleri gibi ayrıcalıklı hizmetler uygulayan uygulamalar da imza izinlerini kullanır. Bu uygulamalarda, yalnızca sistemin hizmetlere bağlanabilmesi için hizmet bağlama imza izinleri gerekir.
Sistem, imza izinlerine signature
koruma düzeyini atar.
Çalışma zamanı izinleri
Tehlikeli izinler olarak da bilinen çalışma zamanında izinler, uygulamanıza kısıtlanmış verilere ek erişim sağlar veya uygulamanızın sistemi ve diğer uygulamaları daha önemli ölçüde etkileyen kısıtlanmış işlemler gerçekleştirmesine olanak tanır. Bu nedenle, kısıtlanmış verilere erişebilmek veya kısıtlanmış işlemleri gerçekleştirebilmek için uygulamanızda çalışma izni isteğinde bulunmanız gerekir. Bu izinlerin daha önce verilmiş olduğunu varsaymayın. İzinleri kontrol edin ve gerekirse her erişim öncesinde isteyin.
Uygulamanız çalışma zamanı izni istediğinde sistem, Şekil 3'te gösterildiği gibi bir çalışma zamanı izni istemi gösterir.
Birçok çalışma zamanında istenen izin, hassas olabilecek bilgiler içeren özel bir kısıtlanmış veri türü olan özel kullanıcı verilerine erişir. Gizli kullanıcı verilerine örnek olarak konum ve iletişim bilgileri verilebilir.
Mikrofon ve kamera, özellikle hassas bilgilere erişim sağlar. Bu nedenle sistem, uygulamanızın bu bilgilere neden eriştiğini açıklamanıza yardımcı olur.
Sistem, çalışma zamanı izinlerine dangerous
koruma düzeyini atar.
Özel izinler
Özel izinler, belirli uygulama işlemlerine karşılık gelir. Özel izinleri yalnızca platform ve OEM'ler tanımlayabilir. Ayrıca platform ve OEM'ler, diğer uygulamaların üzerine çizme gibi özellikle güçlü işlemlere erişimi korumak istediklerinde genellikle özel izinler tanımlar.
Sistem ayarlarındaki Özel uygulama erişimi sayfasında, kullanıcı tarafından etkinleştirilebilen bir dizi işlem bulunur. Bu işlemlerin çoğu özel izin olarak uygulanır.
Özel izin isteğinde bulunma hakkında daha fazla bilgi edinin.
Sistem, özel izinlere appop
koruma düzeyini atar.
İzin grupları
İzinler izin gruplarına ait olabilir. İzin grupları, mantıksal olarak ilişkili bir dizi izinden oluşur. Örneğin, SMS mesajı gönderme ve alma izinleri, her ikisi de uygulamanın SMS ile etkileşimiyle ilgili olduğu için aynı gruba ait olabilir.
İzin grupları, bir uygulama yakından ilişkili izinler istediğinde sistemin kullanıcıya gösterilen sistem iletişim kutusu sayısını en aza indirmesine yardımcı olur. Kullanıcıya bir uygulama için izin verme istemi gösterildiğinde, aynı gruba ait izinler aynı arayüzde gösterilir. Ancak izinler, bildirimde bulunulmaksızın grup değiştirebilir. Bu nedenle, belirli bir iznin başka bir izinle gruplandırıldığını varsaymayın.
En iyi uygulamalar
Uygulama izinleri, sistem güvenlik özelliklerini temel alır ve Android'in kullanıcı gizliliğiyle ilgili aşağıdaki hedefleri desteklemesine yardımcı olur:
- Kontrol: Kullanıcı, uygulamalarla paylaştığı veriler üzerinde kontrol sahibidir.
- Şeffaflık: Kullanıcı, uygulamanın hangi verileri kullandığını ve bu verilere neden eriştiğini anlar.
- Veri azaltma: Uygulama yalnızca kullanıcının başlattığı belirli bir görev veya işlem için gereken verilere erişir ve bu verileri kullanır.
Bu bölümde, izinleri uygulamanızda etkili bir şekilde kullanmayla ilgili temel en iyi uygulamalar sunulmaktadır. Android'de izinlerle nasıl çalışabileceğiniz hakkında daha fazla bilgi için uygulama izinleriyle ilgili en iyi uygulamalar sayfasını ziyaret edin.
Minimum sayıda izin isteyin
Kullanıcı uygulamanızda belirli bir işlem istediğinde uygulamanız yalnızca bu işlemi tamamlamak için ihtiyaç duyduğu izinleri istemelidir. İzinleri nasıl kullandığınıza bağlı olarak, hassas bilgilere erişmeye gerek kalmadan uygulamanızın kullanım alanını yerine getirmenin alternatif bir yolu olabilir.
Çalışma zamanı izinlerini belirli işlemlerle ilişkilendirme
İzinleri, uygulamanızın kullanım alanlarındaki akışta mümkün olduğunca geç bir aşamada isteyin. Örneğin, uygulamanız kullanıcıların diğer kullanıcılara sesli mesaj göndermesine izin veriyorsa kullanıcının mesajlaşma ekranına gidip Sesli mesaj gönder düğmesine basmasını bekleyin. Kullanıcı düğmeye bastıktan sonra uygulamanız mikrofon erişimi isteyebilir.
Uygulamanızın bağımlılıkları
Bir kitaplığı dahil ettiğinizde, kitaplığın izin şartlarını da devralırsınız. Her bağımlılığın gerektirdiği izinlerin ve bu izinlerin ne için kullanıldığının farkında olun.
Şeffaf olun
Kullanıcılardan izin isterken hangi verilere neden erişim sağlayacağınızı açıkça ifade edin ki bilinçli kararlar verebilsinler.
Sistem erişimlerini açıkça belirtme
Sistemde bu göstergeler sağlanmıyorsa kamera veya mikrofon gibi hassas verilere ya da donanımlara eriştiğinizde uygulamanızda sürekli bir gösterge sağlayın. Bu hatırlatıcı, kullanıcıların uygulamanızın kısıtlanmış verilere ne zaman eriştiğini veya kısıtlanmış işlemleri ne zaman gerçekleştirdiğini tam olarak anlamalarına yardımcı olur.
Sistem bileşenlerindeki izinler
İzinler yalnızca sistem işlevselliği istemek için kullanılmaz. Uygulamanızın sistem bileşenleri, diğer uygulamalarla etkileşimleri kısıtlama ile ilgili sayfada açıklandığı gibi, uygulamanızla hangi diğer uygulamaların etkileşim kurabileceğini kısıtlayabilir.