Junior
Android-də hansı icazə növləri (permissions) mövcuddur?
sobes.tech Süni İntellekt
AI-dan cavab
Android-də, tətbiqin qorunan resurslara və istifadəçinin məlumatlarına giriş səviyyələrini müəyyən edən müxtəlif icazə növləri mövcuddur.
- Normal icazələr: Minimal riskli icazələr. Tətbiq quraşdırıldıqda avtomatik verilir və işləmə zamanı istifadəçinin açıq razılığı tələb edilmir. Məsələn, internetə giriş (
android.permission.INTERNET). - Təhlükəli icazələr: Yüksək riskli icazələr. Tətbiqin işləmə zamanı istifadəçinin açıq razılığını tələb edir. Bu resurslara giriş gizlilik və ya cihazın işləməsinə təsir edə bilər. Məsələn, əlaqələrə giriş (
android.permission.READ_CONTACTS), kamera (android.permission.CAMERA). - İmza icazələri: Eyni sertifikatla imzalanmış tətbiqlərə verilə bilən icazələr. Bu, eyni sistem və ya tətbiq dəstindəki komponentlər arasında girişin idarə olunması üçün istifadə olunur.
- İmza və ya sistem icazələri: Bu icazələr, ya eyni sertifikatla imzalanmış tətbiqlərə, ya da sistem bölməsində yerləşən tətbiqlərə verilə bilər.
Bundan əlavə, aşağıdakı kimi fərqləndirilə bilər:
- Quraşdırma zamanı icazələr: Tətbiqin quraşdırılması zamanı tələb olunan və verilən icazələr.
normalvəimzaicazələrini əhatə edir. - İş vaxtı icazələr: Android 6.0 (API səviyyəsi 23) və yuxarı cihazlarda tətbiq işləyərkən tələb olunan icazələr.
təhlükəliicazələrə daxildir. - Xüsusi icazələr: Verilməsi üçün xüsusi addımlar tələb edən icazə sinfi. Məsələn, digər pəncərələr üzərində yerləşdirmə (
SYSTEM_ALERT_WINDOW) və ya sistem parametrlərinin dəyişdirilməsi (WRITE_SETTINGS). Bu icazələrnormalvə yatəhlükəlideyil.
Tətbiqin manifestində bütün zəruri icazələr tələb olunur:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.CAMERA" />
<application
...
>
...
</application>
</manifest>
Təhlükəli icazələr işləmə zamanı tələb olunur:
// Kontaktların oxunması üçün icazə tələb etmə nümunəsi
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.READ_CONTACTS)
!= PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this,
arrayOf(Manifest.permission.READ_CONTACTS),
MY_PERMISSIONS_REQUEST_READ_CONTACTS)
} else {
// İcazə artıq verilib, əməliyyat həyata keçirilə bilər
}