Sobes.tech
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 {
    // Թույլտվությունը արդեն տրամադրված է, կարող եք կատարել գործողություն
}