Thuta Learning
ရှာဖွေရန်
IntermediateMobile Developmentintermediate

Runtime Permissions Basics

စိတ်လျှော့ပါ။ ဒီခန်းကို စာအုပ်လိုမဟုတ်ဘဲ စကားပြောသလိုပဲ၊ နားလည်လွယ်အောင် ရှင်းပါမယ်။

ဒီခန်းပြီးရင် ဘာတတ်သွားမလဲ

  • Runtime Permissions Basics ကို ကြောက်စရာမလိုအောင် နားလည်မယ်
  • ကိုယ်တိုင် Android Studio/Compose code ကို run ကြည့်တတ်မယ်
  • Real project ထဲမှာ ဒီ concept ကို ချက်ချင်း အသုံးချတတ်မယ်

ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်

AndroidManifest.xml ထဲမှာ permission ကို declare ထားရုံနဲ့ မလုံလောက်ပါ — sensitive permission (Camera, Location, Notification) တွေကို app run time မှာ user ဆီက dialog ပြပြီး တိုက်ရိုက် တောင်းဆိုရပါတယ် (Android 6.0+). User က 'Allow' ဒါမှမဟုတ် 'Deny' ရွေးနိုင်ပါတယ် — 'Deny' ဆိုရင် feature ကို graceful ဖြစ်ဖြစ် handle လုပ်ပေးရပါတယ် (crash မဖြစ်စေဖို့).

လက်တွေ့ scenario နဲ့ ချိတ်ကြည့်မယ်

Camera feature ရှိတဲ့ app မှာ `AndroidManifest.xml` ထဲ `<uses-permission android:name="android.permission.CAMERA" />` ထည့်ပြီး, Compose ထဲမှာ `rememberLauncherForActivityResult` ကို သုံးပြီး runtime permission dialog ကို trigger လုပ်ရပါတယ် — user 'Allow' နှိပ်မှသာ camera feature ကို ဖွင့်ပေးနိုင်ပါတယ်, 'Deny' ရွေးရင် explanation message ပြပြီး feature ကို disable ထားရပါတယ်.

အတူတူ ကြည့်မယ်

kotlin
@Composable
fun CameraScreen() {
    var hasPermission by remember { mutableStateOf(false) }
    val launcher = rememberLauncherForActivityResult(
        ActivityResultContracts.RequestPermission()
    ) { granted -> hasPermission = granted }

    Button(onClick = { launcher.launch(Manifest.permission.CAMERA) }) {
        Text("Request Camera Permission")
    }

    if (hasPermission) {
        Text("Camera ready!")
    } else {
        Text("Camera permission not granted")
    }
}
You should see
Button ကို click ရင် system permission dialog ပေါ်လာပြီး, 'Allow' ရွေးရင် 'Camera ready!' ပြပါလိမ့်မယ်။

၅ မိနစ် စမ်းကြည့်

`CameraScreen` ကို run ကြည့်ပြီး permission button ကို click ကြည့်ပါ — 'Allow' နဲ့ 'Deny' ၂ မျိုးလုံး ရွေးကြည့်ပြီး UI ဘယ်လို ပြောင်းလဲသွားလဲ ကြည့်ကြည့်ပါ။

သတိလေးတစ်ချက်

User 'Deny' ကို ထပ်ခါထပ်ခါ ရွေးရင် (ဒါမှမဟုတ် 'Don't ask again' နှိပ်ရင်) Android က permission dialog ကို ထပ်မပြတော့ပါ — Settings ကို manual သွားရမှာမို့, app ထဲမှာ ဒီ scenario ကို handle လုပ်ပေးထားသင့်ပါတယ်။

ဒီနေရာမှာ လူအများမှားတတ်တယ်

  • Permission granted/denied ကို check မလုပ်ဘဲ feature (camera API) ကို တိုက်ရိုက် ခေါ်သုံးခြင်း — SecurityException crash ဖြစ်နိုင်ပါတယ်
  • User 'Deny' ရွေးလိုက်ရင် ဘာမှ explanation မပြဘဲ feature ကို silently disable ထားခြင်း — user confuse ဖြစ်နိုင်ပါတယ်

အခု ကိုယ်တိုင် စမ်းကြည့်

`CameraScreen` ကို run ကြည့်ပြီး permission button ကို click ကြည့်ပါ — 'Allow' နဲ့ 'Deny' ၂ မျိုးလုံး ရွေးကြည့်ပြီး UI ဘယ်လို ပြောင်းလဲသွားလဲ ကြည့်ကြည့်ပါ။

You'll know it worked when: Button ကို click ရင် system permission dialog ပေါ်လာပြီး, 'Allow' ရွေးရင် 'Camera ready!' ပြပါလိမ့်မယ်။

Runtime Permissions Basics | Thuta Learning