@matthewwarnes/react-native-ble-manager-plugin
Version:
Config plugin to auto configure react-native-ble-manager on prebuild
36 lines (35 loc) • 1.66 kB
TypeScript
import { ConfigPlugin, AndroidConfig } from "@expo/config-plugins";
type InnerManifest = AndroidConfig.Manifest.AndroidManifest["manifest"];
type ManifestPermission = InnerManifest["permission"];
type ExtraTools = {
"tools:targetApi"?: string;
};
type ManifestUsesPermissionWithExtraTools = {
$: AndroidConfig.Manifest.ManifestUsesPermission["$"] & ExtraTools;
};
type AndroidManifest = {
manifest: InnerManifest & {
permission?: ManifestPermission;
"uses-permission"?: ManifestUsesPermissionWithExtraTools[];
"uses-permission-sdk-23"?: ManifestUsesPermissionWithExtraTools[];
"uses-feature"?: InnerManifest["uses-feature"];
};
};
export declare const withBLEAndroidManifest: ConfigPlugin<{
isBackgroundEnabled: boolean;
neverForLocation: boolean;
}>;
/**
* Add location permissions
* - 'android.permission.ACCESS_COARSE_LOCATION' for Android SDK 28 (Android 9) and lower
* - 'android.permission.ACCESS_FINE_LOCATION' for Android SDK 29 (Android 10) and higher.
* From Android SDK 31 (Android 12) it might not be required if BLE is not used for location.
*/
export declare function addLocationPermissionToManifest(androidManifest: AndroidManifest, neverForLocationSinceSdk31: boolean): AndroidManifest;
/**
* Add 'android.permission.BLUETOOTH_SCAN'.
* Required since Android SDK 31 (Android 12).
*/
export declare function addScanPermissionToManifest(androidManifest: AndroidManifest, neverForLocation: boolean): AndroidManifest;
export declare function addBLEHardwareFeatureToManifest(androidManifest: AndroidConfig.Manifest.AndroidManifest): AndroidConfig.Manifest.AndroidManifest;
export {};