2016-03-29 11 views
16

W Androidzie użytkownicy Marshmallow udzielają zezwoleń aplikacjom, gdy aplikacja jest uruchomiona, a nie podczas instalacji aplikacji, więc w jaki sposób sprawdzać i przyznawać zezwolenia w Run-Time w trybie jonowym?Prośba o uprawnienia w Run Run Ionic

Odpowiedz

29

Można użyć cordova-diagnostic-plugin sprawdzić i poprosić Android uprawnienia wykonywania:

Sprawdź uprawnienia:

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); 

Poproś o pozwolenie:

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

Hi Dave - callback sukces właśnie tutaj przyjmuje parametr statusu. Co się stanie, jeśli chcę podjąć inną akcję dotyczącą sukcesu, na przykład zapisać plik? Wydaje się, że to naturalne miejsce, w którym można to zrobić wewnątrz funkcji wywołania zwrotnego, ponieważ chcesz poczekać, aż uprawnienia zostaną potwierdzone przed zapisaniem, ale to nie jest opcja. Czy powinienem przechowywać status w parametrze globalnym (yuk)? Czy istnieje lepsze podejście? –

+0

Json array '['CAMERA']' zamiast 'cordova.plugins.diagnostic.runtimePermission.CAMERA' else nie powiedzie się. – YumYumYum

+1

??? z pewnością 'cordova.plugins.diagnostic.runtimePermission.CAMERA === cordova.plugins.diagnostic.runtimePermission ['CAMERA']' – DaveAlden