Normal Permission — isang kategorya ng mga pahintulot sa Android na awtomatikong ibinibigay ng sistema nang hindi nagtatanong sa gumagamit. Ayon sa Android Developer Documentation, 2024, ang normal na pahintulot ay may ProtectionLevel normal at hindi nangangailangan ng runtime-dialog, hindi tulad ng mga mapanganib. Sinasaklaw nila ang access sa internet, estado ng network at panginginig ng boses, nang hindi lumilikha ng panganib para sa kumpidensyal na data ng gumagamit.
Pangunahin
Normal Permission — isang uri ng system pahintulot ng Android na may ProtectionLevel normal, awtomatikong ibinibigay sa application sa sandali ng pag-install. Ang developer ay hindi kailangang magsulat ng code para sa kahilingan — sapat na banggitin ang pahintulot sa AndroidManifest.xml. Ang gumagamit ay hindi nakakakita ng mga dialog at hindi maaaring bawiin ang normal permission nang hiwalay, sa pamamagitan lamang ng pagtanggal ng buong application.
Inuuri ng Android system ang normal na pahintulot bilang mababa ang panganib — hindi sila nagbibigay ng access sa personal na data, camera o mikropono. Mga tipikal na halimbawa: access sa internet, pamamahala ng panginginig ng boses, pagbabasa ng status ng Wi-Fi. Ayon sa Android Security Model (2024), humigit-kumulang 40 porsyento ng lahat ng system pahintulot ay kabilang sa kategoryang normal.
Mahalagang katangian — ang normal na pahintulot ay hindi binabawi sa runtime sa pamamagitan ng Settings. Kung nais ng gumagamit na bawalan ang access, ang tanging paraan ay tanggalin ang application. Dapat isaalang-alang ito ng mga developer sa arkitektura, ngunit para sa mga gumagamit, pinapasimple ng ganitong paraan ang interaksyon: walang mga dialog sa unang paglunsad.
Ang paghahati sa normal at mapanganib na pahintulot ay lumitaw sa Android 6.0 Marshmallow (API 23). Bago ang bersyong ito, lahat ng pahintulot ay hinihiling sa pag-install — ang gumagamit ay nakakakita ng isang listahan at tinatanggap o tinatanggihan ito nang buo. Normal Permission ay nagpanatili ng modelong ito para sa mababang-panganib na operasyon, habang ang Dangerous ay lumipat sa runtime request. Ang pagbabagong ito ay nagpabuti ng karanasan ng gumagamit at sabay na nagpataas ng seguridad.
Maraming Android system API ang nangangailangan ng malinaw na pagbanggit ng normal na pahintulot, kahit na awtomatiko ang access. Halimbawa, ang klase na ConnectivityManager ay nangangailangan ng ACCESS_NETWORK_STATE, VibratorService ay nangangailangan ng VIBRATE, WifiManager ay nangangailangan ng ACCESS_WIFI_STATE. Kung walang deklarasyon ng kaukulang uses-permission, ang pagtawag sa mga API na ito ay magdudulot ng SecurityException.
ProtectionLevel normal — ang pinakamababang antas ng proteksyon sa Android Permission System. Ang mga pahintulot na may ganitong antas ay idinedeklara sa manifest, at sinusuri ng system ang deklarasyon sa pag-install, na nagbibigay ng access nang walang interbensyon ng gumagamit. Walang UI elementong ipinapakita, walang callback na tinatawag.
Ang mekanismo ng pagsusuri ay gumagana sa antas ng PackageManager. Sa pag-install ng APK, ini-scan ng system ang lahat ng uses-permission tag, tinutukoy ang antas ng proteksyon ng bawat pahintulot sa pamamagitan ng pagtutugma sa mga system definition sa mga file ng permissions.xml at para sa normal-level ay nagrerehistro lang ng access. Ang proseso ay tumatagal ng millisecond at hindi nangangailangan ng interaksyon sa user interface.
Ang algorithm ng pagbibigay ay ganito:
Hindi mababawi ng gumagamit ang normal na pahintulot sa pamamagitan ng interface. Sa mga setting ng application sa seksyong Mga Pahintulot, tanging ang mapanganib na pahintulot ang ipinapakita. Ito ay kabaligtaran sa iOS, kung saan ang bawat pahintulot ay nangangailangan ng hiwalay na kumpirmasyon anuman ang antas ng sensitivity ng function.
Normal at Dangerous Permission — dalawang magkasalungat na kategorya ng proteksyon sa Android. Ang pangunahing pagkakaiba ay sa paraan ng pagbibigay: ang normal ay awtomatikong ibinibigay sa pag-install, ang mapanganib ay nangangailangan ng malinaw na pahintulot sa pamamagitan ng runtime dialog. Ang pagkakaibang ito ay naka-embed sa arkitektura ng seguridad ng Android simula sa bersyon 6.0 Marshmallow.
Paghahambing ng mga pangunahing katangian:
| Katangian | Normal Permission | Dangerous Permission |
|---|---|---|
| ProtectionLevel | normal | dangerous |
| Kahilingan sa gumagamit | Hindi kinakailangan | Runtime dialog sapilitan |
| Posibilidad ng pagbawi | Hindi, tanggalin lang ang application | Oo, sa pamamagitan ng mga setting anumang oras |
| Pagsusuri sa code | Laging PERMISSION_GRANTED | checkSelfPermission sapilitan |
| Halimbawa | INTERNET, VIBRATE, ACCESS_NETWORK_STATE | CAMERA, RECORD_AUDIO, ACCESS_FINE_LOCATION |
Ang gumagamit ay hindi nakakakita ng anumang dialog sa kahilingan ng Normal Permission. Kung ang application ay nangangailangan ng INTERNET — nakukuha nito ito nang tahimik. Para sa Dangerous Permission, nagpapakita ang system ng modal dialog na may paglalarawan ng hinihinging access. Pinipindot ng gumagamit ang Allow o Deny, at sa paglaon ay maaaring bawiin ang pahintulot anumang oras sa pamamagitan ng Settings. Ito ang pangunahing pagkakaiba sa UX na tumutukoy sa estratehiya ng pag-develop ng interface.
Ang Normal ay dapat gamitin sa lahat ng kaso kung saan ang access ay hindi tungkol sa sensitibong data. ACCESS_NETWORK_STATE para sa pagsusuri ng koneksyon, VIBRATE para sa tactile feedback, INTERNET para sa HTTP requests — lahat ito ay normal na pahintulot. Ang paglalapat ng mapanganib na antas kung saan sapat ang normal ay masamang praktika, lumilikha ng hindi kinakailangang dialog at nagpapababa ng tiwala ng gumagamit sa application.
Tinutukoy ng Android ang dose-dosenang normal na pahintulot, bawat isa ay tumutugma sa isang tiyak na system function. Lahat sila ay accessible sa pamamagitan ng mga constant ng klase na Manifest.permission. Nasa ibaba ang listahan ng mga pinakamadalas gamitin sa pag-develop ng application.
| Constant | Access | Paglalarawan |
|---|---|---|
| INTERNET | Network | Pagbubukas ng network sockets para sa HTTP requests |
| ACCESS_NETWORK_STATE | Network | Pagkuha ng impormasyon tungkol sa estado ng network |
| ACCESS_WIFI_STATE | Wi-Fi | Pagbabasa ng impormasyon tungkol sa mga koneksyon sa Wi-Fi |
| VIBRATE | Panginginig ng boses | Pagkontrol sa vibration motor ng device |
| BLUETOOTH | Bluetooth | Pagkonekta sa mga Bluetooth device |
| WAKE_LOCK | Power | Pagpigil sa processor na pumasok sa sleep mode |
| SET_ALARM | Alarm | Pagtatakda ng alarm sa pamamagitan ng AlarmManager |
| CHANGE_NETWORK_STATE | Network | Pagbabago ng estado ng koneksyon sa network |
Ang normal na pahintulot ay hindi naka-grupo sa Permission Group para sa layunin ng pagpapakita sa UI. Ang mga grupo sa Android ay para sa screen ng mga setting, kung saan mapanganib na pahintulot lamang ang ipinapakita. Gayunpaman, lohikal na ang normal na pahintulot ay maaaring hatiin sa mga kategorya: network (INTERNET, ACCESS_NETWORK_STATE), hardware (VIBRATE, WAKE_LOCK), system (SET_ALARM) at Bluetooth pahintulot.
Ang ilang constant mula sa Manifest.permission ay maaaring magbago ng antas ng proteksyon sa iba't ibang bersyon ng Android. Halimbawa, ang BLUETOOTH_CONNECT sa Android 12+ ay naging mapanganib na pahintulot na may runtime request, kahit na sa mas lumang bersyon ay normal ito. Ang mga developer ay inirerekomenda na suriin ang kasalukuyang protectionLevel para sa target na API sa pamamagitan ng dokumentasyon.
Maaaring suriin ng developer sa pamamagitan ng programa kung ang isang pahintulot ay normal sa pamamagitan ng PackageManager. Ang pamamaraang getPermissionInfo ay nagbabalik ng PermissionInfo na ang field na protectionLevel ay naglalaman ng flag na PermissionInfo.PROTECTION_NORMAL. Ito ay kapaki-pakinabang para sa dynamic na pagproseso at debugging.
fun isNormalPermission(permission: String): Boolean {
val pm = packageManager
val info = pm.getPermissionInfo(
permission,
PackageManager.GET_META_DATA
)
return info.protectionLevel ==
PermissionInfo.PROTECTION_NORMAL
}
Deklarasyon ng Normal Permission sa AndroidManifest.xml ay ang pinakasimpleng operasyon, na nangangailangan lamang ng isang uses-permission tag. Ang karagdagang configuration ng protectionLevel ay hindi kinakailangan, dahil ang antas ng proteksyon ay tinutukoy ng system definition, hindi ng manifest ng application. Ang developer ay nagbabanggit lamang ng buong pangalan ng constant.
<!-- AndroidManifest.xml -->
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission
android:name="android.permission.VIBRATE" />
Pinoproseso ng system sa pag-install ang lahat ng deklarasyon. Kung kahit isa sa mga nabanggit na pahintulot ay may protectionLevel na iba sa normal, kinakailangan ang runtime request. INTERNET — ang pinakasikat na normal na pahintulot, naroroon sa karamihan ng mga Android application, lalo na sa mga gumagawa ng HTTP requests o naglo-load ng content mula sa network.
Ang kumpletong halimbawa ng AndroidManifest.xml na may normal at mapanganib na pahintulot ay nagpapakita ng pagkakaiba: syntactically ang uses-permission tag ay magkapareho, ngunit sa yugto ng pagpapatupad ang INTERNET at VIBRATE ay awtomatikong ibibigay, habang ang CAMERA ay mangangailangan ng dialog.
<manifest
xmlns:android="http://schemas.android.com/apk/res/android">
<!-- Normal permissions -->
<uses-permission
android:name="android.permission.INTERNET" />
<uses-permission
android:name="android.permission.VIBRATE" />
<!-- Dangerous permission -->
<uses-permission
android:name="android.permission.CAMERA" />
</manifest>
Sa paggamit ng mga library — Google Play Services, Firebase, Glide — maaari silang magdagdag ng sariling uses-permission sa huling manifest sa pamamagitan ng Manifest Merger. Ang ilan sa kanila ay normal (INTERNET para sa Firebase), ang iba ay mapanganib (ACCESS_FINE_LOCATION para sa Google Maps). Dapat suriin ng developer ang huling pinagsamang manifest sa build/outputs/logs/manifest-merger-report.txt bago ang publikasyon.
Normal Permission ay may dalawang pangunahing limitasyon: hindi maaaring bawiin ng gumagamit at kawalan ng UI para sa pamamahala. Kung ang gumagamit ay hindi nagtitiwala sa application, ngunit ang normal na pahintulot ay naibigay na awtomatiko — ang tanging paraan ay tanggalin ang application. Ito ay lumilikha ng tiyak na panganib, dahil ang normal na pahintulot ay hindi nahaharang ng mga standard na tool ng Android.
Ang karagdagang limitasyon ay lumilitaw sa mga device na may maraming profile (Work Profile, Multiple Users). Normal Permission ay agad na ibinibigay para sa lahat ng profile — hindi maaaring limitahan ng application ang pahintulot sa isa lamang. Sa mga corporate scenario, ito ay nareresolba sa pamamagitan ng Managed Configurations.
Hindi posible na suriin kung ang application ay gumagamit ng Normal Permission sa kasalukuyan. Ang system method na checkSelfPermission ay gumagana lamang para sa mapanganib na pahintulot. Para sa normal, ito ay laging nagbabalik ng PERMISSION_GRANTED, na hindi sumasalamin sa aktwal na aktibidad. Dapat itong isaalang-alang sa security audit at pagsusuri ng pag-uugali ng application.
Gayundin, nararapat tandaan na ang ilang manufacturer ng device (Xiaomi, Huawei, Samsung) ay nagbabago ng standard na pag-uugali ng mga pahintulot. Sa kanilang firmware, ang Normal Permission ay maaaring mangailangan ng karagdagang pahintulot sa proprietary shell na MIUI o EMUI. Ang mga developer ay inirerekomenda na subukan ang paggana sa mga tunay na device ng iba't ibang vendor.
Mga Madalas Itanong
Normal Permission ay awtomatikong ibinibigay sa pag-install nang walang dialog. Ang Dangerous ay nangangailangan ng runtime request na may malinaw na pahintulot ng gumagamit at maaaring bawiin sa pamamagitan ng mga setting. Ang Normal ay gumagamit ng ProtectionLevel normal, ang Dangerous — protectionLevel dangerous.
Hindi, para sa normal na pahintulot ay sapat na ideklara ang uses-permission sa AndroidManifest.xml. Ang code para sa kahilingan ay hindi kinakailangan — awtomatikong nagbibigay ang system ng access. Ito ang pagkakaiba sa mapanganib na pahintulot, kung saan kailangan ang ActivityCompat.requestPermissions.
Ang pinakamadalas gamitin: INTERNET (network requests), ACCESS_NETWORK_STATE (pagsusuri ng koneksyon), VIBRATE (tactile feedback) at WAKE_LOCK (pagpapanatiling aktibo ng processor). Halos bawat Android application ay gumagamit ng kahit man lang INTERNET.
Hindi, ang Normal Permission ay hindi maaaring bawiin sa pamamagitan ng mga setting ng application. Ang tanging paraan upang ihinto ang access ay tanggalin ang application. Ito ang pangunahing pagkakaiba mula sa mapanganib na pahintulot na maaaring patayin ng gumagamit anumang oras.
Gamitin ang PackageManager.getPermissionInfo, ibigay ang string name ng pahintulot. Ang pamamaraan ay nagbabalik ng PermissionInfo na may field na protectionLevel. Ihambing sa mga constant na PermissionInfo.PROTECTION_NORMAL o PROTECTION_DANGEROUS upang matukoy ang kategorya.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din