👮‍♂️ İzinlerin Yönetimi

Android üzerinde izin (permission) yapısı

📑 Manifest'e Kaydetme

AndroidManifest.xml dosyasına <uses-permission satırı eklenir.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.snazzyapp">
<uses-permission android:name="android.permission.SEND_SMS"/>
<application ...>
...
</application>
</manifest>

🧙‍♂️ Detaylı bilgi Request App Permission alanında ele alınmaktadır

🙏 İzin İsteğinde Bulunma

Alttaki kodlar herhangi bir Activity içerisinde yazılmalıdır

// thisActivity içerisinde olduğumuz varsayılmıştır
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
// İzin alınmamışsa
// Açıklama yapılmak isteniyorsa yapalım
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.READ_CONTACTS)) {
// Kullanıcı cevabını beklerken UI thread'i bloklamamak için
// asenkron olarak işlemleri sürdürmeliyiz
// Ardından da izin istenmelidir
} else {
// Açıklmaya gerek yoksa direkt izin isteme
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.READ_CONTACTS},
IZIN_KODU);
// IZIN_KODU değişkeninin herhangi bir değer ile tanımlanması gerekir
// Bir sonraki aşamada kullanılacaktır
}
} else {
// İzin zaten verilmiş
}

🤝 İsteği Kontrol Etme

  • İstenilen izni aynı class içerisinde onRequestPermissionResult metodunu override ederek yönetiriz

  • requestCode değişkeni IZIN_KODU'na eşit olması durumunda izin kontrolü yapılır

@Override
public void onRequestPermissionsResult(
int requestCode,
@NonNull String[] permissions,
@NonNull int[] grantResults
) {
if (requestCode == IZIN_KODU) {
// Eğer sonucun uzunluğu 0 ise kullanıcı başka bir yere basarak iptal
// etmiştir.
if (
grantResults.length > 0 &&
grantResults[0] == PackageManager.PERMISSION_GRANTED
) {
// İzin alındı 🚀
startTelemetryService();
}
} else {
// İzin alınamadı 😔
}
}