Junior
Ποιοι τύποι αδειών (permissions) υπάρχουν στο Android;
sobes.tech AI
Απάντηση από AI
Στο Android, υπάρχουν διάφοροι τύποι αδειών που καθορίζουν τα επίπεδα πρόσβασης της εφαρμογής σε προστατευμένους πόρους και δεδομένα του χρήστη.
- Κανονικές άδειες: Άδειες με ελάχιστο κίνδυνο. Παρέχονται αυτόματα κατά την εγκατάσταση της εφαρμογής και δεν απαιτούν ρητή συγκατάθεση του χρήστη κατά τη διάρκεια της λειτουργίας. Για παράδειγμα, πρόσβαση στο διαδίκτυο (
android.permission.INTERNET). - Επικίνδυνες άδειες: Άδειες υψηλού κινδύνου. Απαιτούν ρητή συγκατάθεση του χρήστη κατά τη διάρκεια της λειτουργίας της εφαρμογής. Η πρόσβαση σε αυτούς τους πόρους μπορεί να επηρεάσει την ιδιωτικότητα ή τη λειτουργία της συσκευής. Για παράδειγμα, πρόσβαση σε επαφές (
android.permission.READ_CONTACTS), κάμερα (android.permission.CAMERA). - Άδειες υπογραφής: Άδειες που μπορούν να δοθούν σε εφαρμογές που υπογράφονται με το ίδιο πιστοποιητικό με την εφαρμογή που ορίζει την άδεια. Χρησιμοποιούνται για τον έλεγχο πρόσβασης μεταξύ συστατικών ενός συστήματος ή μιας ομάδας εφαρμογών.
- Άδειες υπογραφής ή συστήματος: Αυτές οι άδειες μπορούν να δοθούν είτε σε εφαρμογές που υπογράφονται με το ίδιο πιστοποιητικό είτε σε εφαρμογές που βρίσκονται στην ενότητα συστήματος.
Επιπλέον, διακρίνονται:
- Άδειες κατά την εγκατάσταση: Άδειες που ζητούνται και παρέχονται κατά την εγκατάσταση της εφαρμογής. Περιλαμβάνουν
κανονικέςκαιυπογραφέςάδειες. - Άδειες κατά την εκτέλεση: Άδειες που ζητούνται κατά τη διάρκεια της λειτουργίας σε συσκευές με Android 6.0 (επίπεδο API 23) και άνω. Περιλαμβάνουν
επικίνδυνεςάδειες. - Ειδικές άδειες: Μια ειδική κατηγορία αδειών που απαιτούν ειδικά βήματα για την παροχή τους. Για παράδειγμα, υπερκάλυψη πάνω από άλλα παράθυρα (
SYSTEM_ALERT_WINDOW) ή αλλαγή ρυθμίσεων συστήματος (WRITE_SETTINGS). Δεν ανήκουν ούτε στιςκανονικέςούτε στιςεπικίνδυνες.
Στο μανιφέστο της εφαρμογής ζητούνται όλες οι απαραίτητες άδειες:
<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>
Η αίτηση επικίνδυνων αδειών πραγματοποιείται κατά τη διάρκεια της λειτουργίας:
// Παράδειγμα αίτησης άδειας για ανάγνωση επαφών
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 {
// Η άδεια έχει ήδη δοθεί, μπορεί να εκτελεστεί η λειτουργία
}