Crossbow permissions

To request permissions with Crossbow you will need to add crossbow dependency to your Cargo.toml file. And add permissions to AndroidManifest.xml or Info.plist:

# This one: [package.metadata] permissions = ["camera", "microphone", "photos", "storage-read"] # Will make the same as this one: [[package.metadata.android.manifest.uses_permission]] name = "android.permission.READ_EXTERNAL_STORAGE" [[package.metadata.android.manifest.uses_permission]] name = "android.permission.CAMERA" [[package.metadata.android.manifest.uses_permission]] name = "android.permission.RECORD_AUDIO" [package.metadata.apple.info_plist] NSCameraUsageDescription = "This app needs access to your phone's camera." NSMicrophoneUsageDescription = "This app needs access to your phone's microphone." NSPhotoLibraryUsageDescription = "This app needs access to your phone's photo library."

Then invoke request_async function. This function checks the permission status in the application and will request permission if it's not granted yet:

#![allow(unused)] fn main() { use crossbow::Permission; let res = Permission::Camera.request_async().await?; match res { Permission::Unknown => println!("Permission is in an unknown state"), Permission::Denied => println!("Denied by user"), Permission::Disabled => println!("Feature is disabled on device."), Permission::Granted => println!("Granted by user."), Permission::Restricted => println!("Restricted (only iOS)."), } }

Also, remember to set permissions in through Cargo.toml or Info.plist/AndroidManifest.xml files. List of required permissions for Cross-Platform Permission you can find in Permission enum.

See usage example.

Also, it's possible to request more permissions with this API:

#[cfg(target_os = "android")] crossbow::android::permission::*; let res = request_permission(&AndroidPermission::ReadCalendar).await?; // or this for iOS: #[cfg(target_os = "ios")] crossbow::ios::permission::*; let res = request_permission(&IosPermission::CaptureDevice(MediaType::Audio)).await;

Maybe useful

Useful commands to debug permission status in Android application using adb:

adb shell pm reset-permissions adb shell pm list permission-groups adb shell pm list permissions adb shell pm grant <app package> <permission name> adb shell pm revoke <app package> <permission name>