ခဏလေး ဒီလိုပဲ စဉ်းစားကြည့်
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 ထားရပါတယ်.
အတူတူ ကြည့်မယ်
@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")
}
}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 လုပ်ပေးထားသင့်ပါတယ်။