Skip to content

Android

When the MAUI permission presets aren’t enough, you can declare Android-specific manifest permissions and hardware features directly.

<ItemGroup>
<AndroidManifestPermission Include="CAMERA" />
<AndroidManifestPermission Include="ACCESS_FINE_LOCATION" />
<AndroidManifestPermission Include="READ_EXTERNAL_STORAGE" MaxSdkVersion="32" />
<AndroidManifestPermission Include="WRITE_EXTERNAL_STORAGE" MinSdkVersion="19" MaxSdkVersion="28" />
</ItemGroup>
MetadataRequiredDescription
MinSdkVersionNoMinimum Android SDK version for this permission
MaxSdkVersionNoMaximum Android SDK version for this permission

Short names like CAMERA are auto-prefixed with android.permission.. Fully qualified names with 3+ dot-separated segments are used as-is.

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" android:maxSdkVersion="32" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:minSdkVersion="19" android:maxSdkVersion="28" />
</manifest>

Declare required or optional hardware features:

<ItemGroup>
<AndroidManifestFeature Include="CAMERA" />
<AndroidManifestFeature Include="LOCATION.GPS" Required="true" />
<AndroidManifestFeature Include="BLUETOOTH" Required="false" />
</ItemGroup>
MetadataRequiredDescription
RequiredNoWhether the feature is required (true or false)

Short names are auto-prefixed with android.hardware..

<manifest xmlns:android="http://schemas.android.com/apk/res/android">
<uses-feature android:name="android.hardware.CAMERA" />
<uses-feature android:name="android.hardware.LOCATION.GPS" android:required="true" />
<uses-feature android:name="android.hardware.BLUETOOTH" android:required="false" />
</manifest>