2016-03-29 2 views
16

В Android Пользователи Marshmallow предоставляют разрешения для приложений во время запуска приложения, а не когда они устанавливают приложение, чтобы проверить и предоставить Permissons во время работы в ионном режиме?Запрос разрешений во время работы Ionic

ответ

29

Вы можете использовать cordova-diagnostic-plugin для проверки и просить разрешения для Android Runtime:

Проверьте разрешение:

cordova.plugins.diagnostic.getPermissionAuthorizationStatus(function(status){ 
    switch(status){ 
     case cordova.plugins.diagnostic.runtimePermissionStatus.GRANTED: 
      console.log("Permission granted to use the camera"); 
      break; 
     case cordova.plugins.diagnostic.runtimePermissionStatus.NOT_REQUESTED: 
      console.log("Permission to use the camera has not been requested yet"); 
      break; 
     case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED: 
      console.log("Permission denied to use the camera - ask again?"); 
      break; 
     case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED_ALWAYS: 
      console.log("Permission permanently denied to use the camera - guess we won't be using it then!"); 
      break; 
    } 
}, function(error){ 
    console.error("The following error occurred: "+error); 
}, cordova.plugins.diagnostic.runtimePermission.CAMERA); 

Запрос разрешения:

cordova.plugins.diagnostic.requestRuntimePermission(function(status){ 
    switch(status){ 
     case cordova.plugins.diagnostic.runtimePermissionStatus.GRANTED: 
      console.log("Permission granted to use the camera"); 
      break; 
     case cordova.plugins.diagnostic.runtimePermissionStatus.NOT_REQUESTED: 
      console.log("Permission to use the camera has not been requested yet"); 
      break; 
     case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED: 
      console.log("Permission denied to use the camera - ask again?"); 
      break; 
     case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED_ALWAYS: 
      console.log("Permission permanently denied to use the camera - guess we won't be using it then!"); 
      break; 
    } 
}, function(error){ 
    console.error("The following error occurred: "+error); 
}, cordova.plugins.diagnostic.runtimePermission.CAMERA); 
+0

Привет Dave - успех обратного вызова здесь просто принимает параметр статуса. Что делать, если я хочу предпринять другие действия для успеха, например, сохранить файл? Кажется, что это естественное место для функции обратного вызова, потому что вы хотите подождать, пока разрешения не будут подтверждены до сохранения, но это не вариант. Должен ли я сохранять статус в глобальном параметре (yuk)? Есть ли лучший подход? –

+0

Json array '['CAMERA']' вместо 'cordova.plugins.diagnostic.runtimePermission.CAMERA' еще не получается. – YumYumYum

+1

??? конечно, 'cordova.plugins.diagnostic.runtimePermission.CAMERA === cordova.plugins.diagnostic.runtimePermission ['CAMERA']' – DaveAlden

Смежные вопросы