2016-03-29 69 views
16

Android中Marshmallow用户在应用程序运行时授予应用程序权限,而不是在他们安装应用程序时,因此如何在运行时检查并授予Permissons离子?在运行时请求权限Ionic

回答

29

您可以使用cordova-diagnostic-plugin检查,并要求Android的运行权限:

检查权限:

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

戴夫嗨 - 成功的回调只是在这里需要一个状态参数。如果我想对成功采取其他行动,比如保存文件,该怎么办?看起来这样做的自然地方是在回调函数中,因为您希望等到权限在保存前被确认,但这不是一个选项。我应该将状态存储在全局参数(yuk)中吗?有更好的方法吗? –

+0

Json array'['CAMERA']'而不是'cordova.plugins.diagnostic.runtimePermission.CAMERA',否则失败。 – YumYumYum

+1

???当然'cordova.plugins.diagnostic.runtimePermission.CAMERA === cordova.plugins.diagnostic.runtimePermission ['CAMERA']' – DaveAlden