A new flutter plugin for getting and requesting permission on Android.
enum PermissionName {
// iOS
Internet,
// both
Calendar,
// both
Camera,
// both
Contacts,
// both
Microphone,
// both
Location,
// Android
Phone,
// Android
Sensors,
// Android
SMS,
// Android
Storage
}
####Android:
Only dangerous permissions require user agreement.
Permissions are organized into groups related to a device's capabilities or features. Under this system, permission requests are handled at the group level and a single permission group corresponds to several permission declarations in the app manifest.
Dangerous permissions and permission groups.
Permission Group | Permissions |
CALENDAR | READ_CALENDAR |
WRITE_CALENDAR | |
CAMERA | CAMERA |
CONTACTS | READ_CONTACTS |
WRITE_CONTACTS | |
GET_ACCOUNTS | |
LOCATION | ACCESS_FINE_LOCATION |
ACCESS_COARSE_LOCATION | |
MICROPHONE | RECORD_AUDIO |
PHONE | READ_PHONE_STATE |
CALL_PHONE | |
READ_CALL_LOG | |
WRITE_CALL_LOG | |
ADD_VOICEMAIL | |
USE_SIP | |
PROCESS_OUTGOING_CALLS | |
SENSORS | BODY_SENSORS |
SMS | SEND_SMS |
RECEIVE_SMS | |
READ_SMS | |
RECEIVE_WAP_PUSH | |
RECEIVE_MMS | |
STORAGE | READ_EXTERNAL_STORAGE |
WRITE_EXTERNAL_STORAGE |
Make sure you add the needed permissions to your Android Manifest Permission.
<uses-permission android:name="android.permission.READ_CALENDAR" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="android.permission.WRITE_CONTACTS" />
<uses-permission android:name="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.READ_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALL_LOG" />
<uses-permission android:name="android.permission.WRITE_CALENDAR" />
<uses-permission android:name="android.permission.ADD_VOICEMAIL" />
<uses-permission android:name="android.permission.USE_SIP" />
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<uses-permission android:name="android.permission.BODY_SENSORS" />
<uses-permission android:name="android.permission.SEND_SMS" />
<uses-permission android:name="android.permission.RECEIVE_SMS" />
<uses-permission android:name="android.permission.READ_SMS" />
<uses-permission android:name="android.permission.RECEIVE_WAP_PUSH" />
<uses-permission android:name="android.permission.RECEIVE_MMS" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Add the needed permissions to your info.plist
<key>NSCalendarsUsageDescription</key>
<string>Your prompt</string>
<key>NSCameraUsageDescription</key>
<string>Your prompt</string>
<key>NSContactsUsageDescription</key>
<string>Your prompt</string>
<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>Your prompt</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>Your prompt</string>
<key>NSMicrophoneUsageDescription</key>
<string>Your prompt</string>
<key>NSPhotoLibraryUsageDescription</key>
<string>Your prompt</string>
<key>NSRemindersUsageDescription</key>
<string>Your prompt</string>
import 'package:permission/permission.dart';
# Android
List<Permissions> permissions = await Permission.getPermissionStatus([PermissionName.Calendar, PermissionName.Camera]);
List<PermissionName> permissionNames = await Permission.requestPermissions([PermissionName.Calendar, PermissionName.Camera]);
# iOS
PermissionStatus permissionStatus = await Permission.getSinglePermissionStatus(PermissionName.Calendar);
PermissionStatus permissionStatus = await Permission.requestSinglePermission(PermissionName.Calendar);
# Both
Permission.openSettings;