2017-05-09 23:52:58 +02:00
import { Injectable } from '@angular/core' ;
2018-04-08 18:51:08 +02:00
import { Cordova , IonicNativePlugin , Plugin } from '@ionic-native/core' ;
2017-05-09 23:52:58 +02:00
/**
* @name Android Permissions
2020-06-11 10:56:34 -05:00
* @premier android-permissions
2017-05-09 23:52:58 +02:00
* @description
2017-05-09 17:55:08 -04:00
* This plugin is designed to support Android new permissions checking mechanism.
*
* You can find all permissions here: https://developer.android.com/reference/android/Manifest.permission.html
2017-05-09 23:52:58 +02:00
*
* @usage
* ```
2018-10-10 16:13:45 -05:00
* import { AndroidPermissions } from '@ionic-native/android-permissions/ngx';
2017-05-09 23:52:58 +02:00
*
*
* constructor(private androidPermissions: AndroidPermissions) { }
*
* ...
*
* this.androidPermissions.checkPermission(this.androidPermissions.PERMISSION.CAMERA).then(
2017-12-08 13:50:20 -06:00
* result => console.log('Has permission?',result.hasPermission),
2017-08-24 01:37:31 +02:00
* err => this.androidPermissions.requestPermission(this.androidPermissions.PERMISSION.CAMERA)
2017-05-09 23:52:58 +02:00
* );
*
* this.androidPermissions.requestPermissions([this.androidPermissions.PERMISSION.CAMERA, this.androidPermissions.PERMISSION.GET_ACCOUNTS]);
*
* ```
2017-12-08 13:50:20 -06:00
*
* Android 26 and above: due to Android 26's changes to permissions handling (permissions are requested at time of use rather than at runtime,) if your app does not include any functions (eg. other Ionic Native plugins) that utilize a particular permission, then `requestPermission()` and `requestPermissions()` will resolve immediately with no prompt shown to the user. Thus, you must include a function utilizing the feature you would like to use before requesting permission for it.
2017-05-09 23:52:58 +02:00
*/
@Plugin ( {
pluginName : 'AndroidPermissions' ,
plugin : 'cordova-plugin-android-permissions' ,
pluginRef : 'cordova.plugins.permissions' ,
repo : 'https://github.com/NeoLSN/cordova-plugin-android-permissions' ,
2020-05-16 14:40:49 +02:00
platforms : [ 'Android' ] ,
2017-05-09 23:52:58 +02:00
} )
2019-02-20 17:37:39 +01:00
@Injectable ( )
2017-05-09 23:52:58 +02:00
export class AndroidPermissions extends IonicNativePlugin {
2017-05-17 06:32:27 -04:00
PERMISSION : any = {
2017-05-09 23:52:58 +02:00
ACCESS_CHECKIN_PROPERTIES : 'android.permission.ACCESS_CHECKIN_PROPERTIES' ,
ACCESS_COARSE_LOCATION : 'android.permission.ACCESS_COARSE_LOCATION' ,
ACCESS_FINE_LOCATION : 'android.permission.ACCESS_FINE_LOCATION' ,
2020-05-16 14:40:49 +02:00
ACCESS_LOCATION_EXTRA_COMMANDS : 'android.permission.ACCESS_LOCATION_EXTRA_COMMANDS' ,
2017-05-09 23:52:58 +02:00
ACCESS_MOCK_LOCATION : 'android.permission.ACCESS_MOCK_LOCATION' ,
ACCESS_NETWORK_STATE : 'android.permission.ACCESS_NETWORK_STATE' ,
ACCESS_SURFACE_FLINGER : 'android.permission.ACCESS_SURFACE_FLINGER' ,
ACCESS_WIFI_STATE : 'android.permission.ACCESS_WIFI_STATE' ,
ACCOUNT_MANAGER : 'android.permission.ACCOUNT_MANAGER' ,
ADD_VOICEMAIL : 'com.android.voicemail.permission.ADD_VOICEMAIL' ,
AUTHENTICATE_ACCOUNTS : 'android.permission.AUTHENTICATE_ACCOUNTS' ,
BATTERY_STATS : 'android.permission.BATTERY_STATS' ,
BIND_ACCESSIBILITY_SERVICE : 'android.permission.BIND_ACCESSIBILITY_SERVICE' ,
BIND_APPWIDGET : 'android.permission.BIND_APPWIDGET' ,
2020-05-16 14:40:49 +02:00
BIND_CARRIER_MESSAGING_SERVICE : 'android.permission.BIND_CARRIER_MESSAGING_SERVICE' ,
2017-05-09 23:52:58 +02:00
BIND_DEVICE_ADMIN : 'android.permission.BIND_DEVICE_ADMIN' ,
BIND_DREAM_SERVICE : 'android.permission.BIND_DREAM_SERVICE' ,
BIND_INPUT_METHOD : 'android.permission.BIND_INPUT_METHOD' ,
BIND_NFC_SERVICE : 'android.permission.BIND_NFC_SERVICE' ,
2020-05-16 14:40:49 +02:00
BIND_NOTIFICATION_LISTENER_SERVICE : 'android.permission.BIND_NOTIFICATION_LISTENER_SERVICE' ,
2017-05-09 23:52:58 +02:00
BIND_PRINT_SERVICE : 'android.permission.BIND_PRINT_SERVICE' ,
BIND_REMOTEVIEWS : 'android.permission.BIND_REMOTEVIEWS' ,
BIND_TEXT_SERVICE : 'android.permission.BIND_TEXT_SERVICE' ,
BIND_TV_INPUT : 'android.permission.BIND_TV_INPUT' ,
BIND_VOICE_INTERACTION : 'android.permission.BIND_VOICE_INTERACTION' ,
BIND_VPN_SERVICE : 'android.permission.BIND_VPN_SERVICE' ,
BIND_WALLPAPER : 'android.permission.BIND_WALLPAPER' ,
BLUETOOTH : 'android.permission.BLUETOOTH' ,
BLUETOOTH_ADMIN : 'android.permission.BLUETOOTH_ADMIN' ,
BLUETOOTH_PRIVILEGED : 'android.permission.BLUETOOTH_PRIVILEGED' ,
BODY_SENSORS : 'android.permission.BODY_SENSORS' ,
BRICK : 'android.permission.BRICK' ,
BROADCAST_PACKAGE_REMOVED : 'android.permission.BROADCAST_PACKAGE_REMOVED' ,
BROADCAST_SMS : 'android.permission.BROADCAST_SMS' ,
BROADCAST_STICKY : 'android.permission.BROADCAST_STICKY' ,
BROADCAST_WAP_PUSH : 'android.permission.BROADCAST_WAP_PUSH' ,
CALL_PHONE : 'android.permission.CALL_PHONE' ,
CALL_PRIVILEGED : 'android.permission.CALL_PRIVILEGED' ,
CAMERA : 'android.permission.CAMERA' ,
CAPTURE_AUDIO_OUTPUT : 'android.permission.CAPTURE_AUDIO_OUTPUT' ,
2020-05-16 14:40:49 +02:00
CAPTURE_SECURE_VIDEO_OUTPUT : 'android.permission.CAPTURE_SECURE_VIDEO_OUTPUT' ,
2017-05-09 23:52:58 +02:00
CAPTURE_VIDEO_OUTPUT : 'android.permission.CAPTURE_VIDEO_OUTPUT' ,
2020-05-16 14:40:49 +02:00
CHANGE_COMPONENT_ENABLED_STATE : 'android.permission.CHANGE_COMPONENT_ENABLED_STATE' ,
2017-05-09 23:52:58 +02:00
CHANGE_CONFIGURATION : 'android.permission.CHANGE_CONFIGURATION' ,
CHANGE_NETWORK_STATE : 'android.permission.CHANGE_NETWORK_STATE' ,
2020-05-16 14:40:49 +02:00
CHANGE_WIFI_MULTICAST_STATE : 'android.permission.CHANGE_WIFI_MULTICAST_STATE' ,
2017-05-09 23:52:58 +02:00
CHANGE_WIFI_STATE : 'android.permission.CHANGE_WIFI_STATE' ,
CLEAR_APP_CACHE : 'android.permission.CLEAR_APP_CACHE' ,
CLEAR_APP_USER_DATA : 'android.permission.CLEAR_APP_USER_DATA' ,
CONTROL_LOCATION_UPDATES : 'android.permission.CONTROL_LOCATION_UPDATES' ,
DELETE_CACHE_FILES : 'android.permission.DELETE_CACHE_FILES' ,
DELETE_PACKAGES : 'android.permission.DELETE_PACKAGES' ,
DEVICE_POWER : 'android.permission.DEVICE_POWER' ,
DIAGNOSTIC : 'android.permission.DIAGNOSTIC' ,
DISABLE_KEYGUARD : 'android.permission.DISABLE_KEYGUARD' ,
DUMP : 'android.permission.DUMP' ,
EXPAND_STATUS_BAR : 'android.permission.EXPAND_STATUS_BAR' ,
FACTORY_TEST : 'android.permission.FACTORY_TEST' ,
FLASHLIGHT : 'android.permission.FLASHLIGHT' ,
FORCE_BACK : 'android.permission.FORCE_BACK' ,
GET_ACCOUNTS : 'android.permission.GET_ACCOUNTS' ,
GET_PACKAGE_SIZE : 'android.permission.GET_PACKAGE_SIZE' ,
GET_TASKS : 'android.permission.GET_TASKS' ,
GET_TOP_ACTIVITY_INFO : 'android.permission.GET_TOP_ACTIVITY_INFO' ,
GLOBAL_SEARCH : 'android.permission.GLOBAL_SEARCH' ,
HARDWARE_TEST : 'android.permission.HARDWARE_TEST' ,
INJECT_EVENTS : 'android.permission.INJECT_EVENTS' ,
INSTALL_LOCATION_PROVIDER : 'android.permission.INSTALL_LOCATION_PROVIDER' ,
INSTALL_PACKAGES : 'android.permission.INSTALL_PACKAGES' ,
INSTALL_SHORTCUT : 'com.android.launcher.permission.INSTALL_SHORTCUT' ,
INTERNAL_SYSTEM_WINDOW : 'android.permission.INTERNAL_SYSTEM_WINDOW' ,
INTERNET : 'android.permission.INTERNET' ,
KILL_BACKGROUND_PROCESSES : 'android.permission.KILL_BACKGROUND_PROCESSES' ,
LOCATION_HARDWARE : 'android.permission.LOCATION_HARDWARE' ,
MANAGE_ACCOUNTS : 'android.permission.MANAGE_ACCOUNTS' ,
MANAGE_APP_TOKENS : 'android.permission.MANAGE_APP_TOKENS' ,
MANAGE_DOCUMENTS : 'android.permission.MANAGE_DOCUMENTS' ,
MASTER_CLEAR : 'android.permission.MASTER_CLEAR' ,
MEDIA_CONTENT_CONTROL : 'android.permission.MEDIA_CONTENT_CONTROL' ,
MODIFY_AUDIO_SETTINGS : 'android.permission.MODIFY_AUDIO_SETTINGS' ,
MODIFY_PHONE_STATE : 'android.permission.MODIFY_PHONE_STATE' ,
MOUNT_FORMAT_FILESYSTEMS : 'android.permission.MOUNT_FORMAT_FILESYSTEMS' ,
MOUNT_UNMOUNT_FILESYSTEMS : 'android.permission.MOUNT_UNMOUNT_FILESYSTEMS' ,
NFC : 'android.permission.NFC' ,
PERSISTENT_ACTIVITY : 'android.permission.PERSISTENT_ACTIVITY' ,
PROCESS_OUTGOING_CALLS : 'android.permission.PROCESS_OUTGOING_CALLS' ,
READ_CALENDAR : 'android.permission.READ_CALENDAR' ,
READ_CALL_LOG : 'android.permission.READ_CALL_LOG' ,
READ_CONTACTS : 'android.permission.READ_CONTACTS' ,
READ_EXTERNAL_STORAGE : 'android.permission.READ_EXTERNAL_STORAGE' ,
READ_FRAME_BUFFER : 'android.permission.READ_FRAME_BUFFER' ,
2020-05-16 14:40:49 +02:00
READ_HISTORY_BOOKMARKS : 'com.android.browser.permission.READ_HISTORY_BOOKMARKS' ,
2017-05-09 23:52:58 +02:00
READ_INPUT_STATE : 'android.permission.READ_INPUT_STATE' ,
READ_LOGS : 'android.permission.READ_LOGS' ,
READ_PHONE_STATE : 'android.permission.READ_PHONE_STATE' ,
READ_PROFILE : 'android.permission.READ_PROFILE' ,
READ_SMS : 'android.permission.READ_SMS' ,
READ_SOCIAL_STREAM : 'android.permission.READ_SOCIAL_STREAM' ,
READ_SYNC_SETTINGS : 'android.permission.READ_SYNC_SETTINGS' ,
READ_SYNC_STATS : 'android.permission.READ_SYNC_STATS' ,
READ_USER_DICTIONARY : 'android.permission.READ_USER_DICTIONARY' ,
READ_VOICEMAIL : 'com.android.voicemail.permission.READ_VOICEMAIL' ,
REBOOT : 'android.permission.REBOOT' ,
RECEIVE_BOOT_COMPLETED : 'android.permission.RECEIVE_BOOT_COMPLETED' ,
RECEIVE_MMS : 'android.permission.RECEIVE_MMS' ,
RECEIVE_SMS : 'android.permission.RECEIVE_SMS' ,
RECEIVE_WAP_PUSH : 'android.permission.RECEIVE_WAP_PUSH' ,
RECORD_AUDIO : 'android.permission.RECORD_AUDIO' ,
REORDER_TASKS : 'android.permission.REORDER_TASKS' ,
RESTART_PACKAGES : 'android.permission.RESTART_PACKAGES' ,
SEND_RESPOND_VIA_MESSAGE : 'android.permission.SEND_RESPOND_VIA_MESSAGE' ,
SEND_SMS : 'android.permission.SEND_SMS' ,
SET_ACTIVITY_WATCHER : 'android.permission.SET_ACTIVITY_WATCHER' ,
SET_ALARM : 'com.android.alarm.permission.SET_ALARM' ,
SET_ALWAYS_FINISH : 'android.permission.SET_ALWAYS_FINISH' ,
SET_ANIMATION_SCALE : 'android.permission.SET_ANIMATION_SCALE' ,
SET_DEBUG_APP : 'android.permission.SET_DEBUG_APP' ,
SET_ORIENTATION : 'android.permission.SET_ORIENTATION' ,
SET_POINTER_SPEED : 'android.permission.SET_POINTER_SPEED' ,
SET_PREFERRED_APPLICATIONS : 'android.permission.SET_PREFERRED_APPLICATIONS' ,
SET_PROCESS_LIMIT : 'android.permission.SET_PROCESS_LIMIT' ,
SET_TIME : 'android.permission.SET_TIME' ,
SET_TIME_ZONE : 'android.permission.SET_TIME_ZONE' ,
SET_WALLPAPER : 'android.permission.SET_WALLPAPER' ,
SET_WALLPAPER_HINTS : 'android.permission.SET_WALLPAPER_HINTS' ,
2020-05-16 14:40:49 +02:00
SIGNAL_PERSISTENT_PROCESSES : 'android.permission.SIGNAL_PERSISTENT_PROCESSES' ,
2017-05-09 23:52:58 +02:00
STATUS_BAR : 'android.permission.STATUS_BAR' ,
SUBSCRIBED_FEEDS_READ : 'android.permission.SUBSCRIBED_FEEDS_READ' ,
SUBSCRIBED_FEEDS_WRITE : 'android.permission.SUBSCRIBED_FEEDS_WRITE' ,
SYSTEM_ALERT_WINDOW : 'android.permission.SYSTEM_ALERT_WINDOW' ,
TRANSMIT_IR : 'android.permission.TRANSMIT_IR' ,
UNINSTALL_SHORTCUT : 'com.android.launcher.permission.UNINSTALL_SHORTCUT' ,
UPDATE_DEVICE_STATS : 'android.permission.UPDATE_DEVICE_STATS' ,
USE_CREDENTIALS : 'android.permission.USE_CREDENTIALS' ,
USE_SIP : 'android.permission.USE_SIP' ,
VIBRATE : 'android.permission.VIBRATE' ,
WAKE_LOCK : 'android.permission.WAKE_LOCK' ,
WRITE_APN_SETTINGS : 'android.permission.WRITE_APN_SETTINGS' ,
WRITE_CALENDAR : 'android.permission.WRITE_CALENDAR' ,
WRITE_CALL_LOG : 'android.permission.WRITE_CALL_LOG' ,
WRITE_CONTACTS : 'android.permission.WRITE_CONTACTS' ,
WRITE_EXTERNAL_STORAGE : 'android.permission.WRITE_EXTERNAL_STORAGE' ,
WRITE_GSERVICES : 'android.permission.WRITE_GSERVICES' ,
2020-05-16 14:40:49 +02:00
WRITE_HISTORY_BOOKMARKS : 'com.android.browser.permission.WRITE_HISTORY_BOOKMARKS' ,
2017-05-09 23:52:58 +02:00
WRITE_PROFILE : 'android.permission.WRITE_PROFILE' ,
WRITE_SECURE_SETTINGS : 'android.permission.WRITE_SECURE_SETTINGS' ,
WRITE_SETTINGS : 'android.permission.WRITE_SETTINGS' ,
WRITE_SMS : 'android.permission.WRITE_SMS' ,
WRITE_SOCIAL_STREAM : 'android.permission.WRITE_SOCIAL_STREAM' ,
WRITE_SYNC_SETTINGS : 'android.permission.WRITE_SYNC_SETTINGS' ,
WRITE_USER_DICTIONARY : 'android.permission.WRITE_USER_DICTIONARY' ,
2020-05-16 14:40:49 +02:00
WRITE_VOICEMAIL : 'com.android.voicemail.permission.WRITE_VOICEMAIL' ,
2017-05-09 23:52:58 +02:00
} ;
/**
* Check permission
2018-04-08 18:51:08 +02:00
* @param {string} permission The name of the permission
2019-08-30 15:53:47 +02:00
* @return {Promise<AndroidPermissionResponse>} Returns a promise
2017-05-09 23:52:58 +02:00
*/
@Cordova ( )
2019-08-30 15:53:47 +02:00
checkPermission ( permission : string ) : Promise < AndroidPermissionResponse > {
2017-12-28 07:28:44 -05:00
return ;
}
2017-05-09 23:52:58 +02:00
2017-05-17 06:32:27 -04:00
/**
* Request permission
2018-04-08 18:51:08 +02:00
* @param {string} permission The name of the permission to request
2019-08-30 15:53:47 +02:00
* @return {Promise<AndroidPermissionResponse>}
2017-05-17 06:32:27 -04:00
*/
@Cordova ( )
2019-08-30 15:53:47 +02:00
requestPermission ( permission : string ) : Promise < AndroidPermissionResponse > {
2017-12-28 07:28:44 -05:00
return ;
}
2017-05-17 06:32:27 -04:00
2017-05-09 23:52:58 +02:00
/**
* Request permissions
2018-09-17 16:05:37 +02:00
* @param {string[]} permissions An array with permissions
2017-05-09 23:52:58 +02:00
* @return {Promise<any>} Returns a promise
*/
@Cordova ( )
2017-12-28 07:28:44 -05:00
requestPermissions ( permissions : string [ ] ) : Promise < any > {
return ;
}
2017-05-09 23:52:58 +02:00
/**
* This function still works now, will not support in the future.
2018-04-08 18:51:08 +02:00
* @param {string} permission The name of the permission
2019-08-30 15:53:47 +02:00
* @return {Promise<AndroidPermissionResponse>} Returns a promise
2017-05-09 23:52:58 +02:00
*/
@Cordova ( )
2019-08-30 15:53:47 +02:00
hasPermission ( permission : string ) : Promise < AndroidPermissionResponse > {
2017-12-28 07:28:44 -05:00
return ;
}
2017-05-09 23:52:58 +02:00
}
2019-08-30 15:53:47 +02:00
export interface AndroidPermissionResponse {
hasPermission : boolean ;
}