Permissions

Certain features in Nutrient need additional permissions, which apps have to declare inside their manifest using <uses-permission> elements. Some permissions are required by Nutrient and are defined in the AndroidManifest.xml file that comes with the library. Other permissions are optional and can be added to the AndroidManifest.xml file of your app if you want to make use of them.

To protect user privacy, starting with Android 6.0 (API 23), users can revoke permissions of apps using the system settings. For dangerous permissions, apps have to perform additional runtime requests for specific permissions, which the user has to manually grant.

Learn more in the official Android Permissions overview(opens in a new tab) guide.

Camera permission

The android.permission.CAMERA(opens in a new tab) permission is optional and is not part of Nutrient’s AndroidManifest.xml. It is usually not required to add this permission to an app’s AndroidManifest.xml file.

Nutrient allows the creation of stamp annotations from gallery and camera images using AnnotationTool.CAMERA. For this, Nutrient will launch an Intent(opens in a new tab) using the MediaStore.ACTION_IMAGE_CAPTURE(opens in a new tab) action, which is used to return an image from either the camera app or a gallery app. As long as this permission is not declared in the app’s manifest, Android will allow the app to launch the intent without any additional permission requests. However, as soon as the app declares android.permission.CAMERA(opens in a new tab) in the manifest, Android will require the app to perform a runtime request for this permission on all devices running Android 6.0+. Nutrient will automatically detect if the permission is declared and if a runtime permission request is necessary, and it will request access to the camera upon using the camera tool for adding an annotation.

External storage permission

Nutrient’s AndroidManifest.xml comes with two permission declarations for accessing files on the public external storage. These permissions are:

External storage permissions are required for direct file access when using file system Uri(opens in a new tab)s that point to files on the external storage. Upon opening a document using a Uri(opens in a new tab), Nutrient will automatically check if the file resides on the external storage, and it will perform a runtime permission request if necessary.

Audio recording permission

Creating sound annotations requires that you add the android.permission.RECORD_AUDIO(opens in a new tab) permission to your AndroidManifest.xml. This permission is optional and is not part of Nutrient’s AndroidManifest.xml.

It is not required to add this permission to your app’s manifest if you don’t want to use AnnotationTool.SOUND for creating sound annotations; it will be disabled automatically when the audio recording permission is missing.

RECORD_AUDIO is considered a dangerous permission. Nutrient automatically checks if the permission has been granted before recording and performs a runtime permission request if necessary.