1

내 코드 냐 앱에 'imagepicker'플러그인을 사용하여 모바일 갤러리에서 이미지를 가져와 사용하고 있습니다. 나는 안드로이드 6.0 장치에서 내 애플 리케이션을 테스트하고있다. marshmallow 안드로이드 6.0은 이전 버전과 달리 런타임 권한이 필요하다. "이전 버전에서는 작동하지만 아파치 23 이상에서는 갤러리를 열 때 사용한다. 즉시 닫히고 앱이 다운됩니다. 내가 검색했을 때 나는 그것을 할 허가가 필요하다는 것을 알았다. 그래서 내가 "안드로이드 권한 코르도바 플러그인"을 사용하기 시작하고이 페이지에 제시된 예를 복사하여 : https://www.npmjs.com/package/cordova-plugin-android-permissions코르도바 앱 'Android 권한 코르도바 플러그인'에 권한 대화 상자가 표시되지 않습니다.

입니다 :

var permissions = cordova.plugins.permissions; 
permissions.hasPermission(permissions.CAMERA, checkPermissionCallback, null); 

function checkPermissionCallback(status) { 
    if(!status.hasPermission) { 
    var errorCallback = function() { 
     console.warn('Camera permission is not turned on'); 
    } 

    permissions.requestPermission(
     permissions.CAMERA, 
     function(status) { 
     if(!status.hasPermission) errorCallback(); 
     }, 
     errorCallback); 
    } 
} 

콘솔은 항상 말한다 : '카메라 권한이 켜지지 않습니다' 권한 대화 상자가 표시되지 않습니다. ,

function requestPermission(){ 
    cordova.plugins.diagnostic.requestRuntimePermission(function(status){ 
     switch(status){ 
      case cordova.plugins.diagnostic.runtimePermissionStatus.GRANTED: 
       console.log("Permission granted (or already granted) - call the plugin"); 
       // call SQLite plugin 
       break; 
      case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED: 
       console.log("Permission denied - ask again"); 
       alert("Come on user, we really need this. I'll ask again..."); 
       requestPermission(); 
       break; 
      case cordova.plugins.diagnostic.runtimePermissionStatus.DENIED_ALWAYS: 
       console.log("Permission permanently denied"); 
       alert("Well that's it, we're dead Jim"); 
       navigator.app.exitApp(); 
       break; 
     } 
    }, function(error){ 
     console.error("The following error occurred: "+error); 
    }, cordova.plugins.diagnostic.runtimePermission.READ_PHONE_STATE); 
} 
requestPermission(); 

가까운 응용 프로그램과 어떤 대화도 보여줍니다 :

는 다시 검색이 해결 질문`의 답을 발견, 그래서 내가 '코르도바 - 플러그인 진단'를 설치하고이 코드를 시도 나는이 플러그인이 무엇을해야하고 어떻게 갤러리를 열 수있는 권한을 얻을 수 있는지 모르겠다. 누군가가 나에게 갤러리를 열어 전체 예제를 보여주고 허락을 받아 이미지를 선택할 수 있다면 큰 도움이 될 것입니다.

영어로 죄송합니다. 인내심에 감사드립니다.

+0

시도해보십시오. 작업 stackoverflow.com/a/41221852/5488468 –

+0

앱을 완전히 제거하고 다시 설치해 보았습니까? 이전에 거부 된 사용 권한을 없애고 새로운 시작을 제공 할 수 있습니다. – Alex

답변

0

난 당신이 사용하는 플러그인에 익숙하지 않은,하지만 난이 비슷한 문제를 해결하기 위해 내 Config.xml의 항목의 이러한 종류로 cordova-plugin-settings-hook을 사용할 수 있었다 :

<platform name="android"> <config-file parent="/*" platform="android" target="AndroidManifest.xml"> <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

사용하려면 config.xml에서 위의 설정을 사용하려면 추가 속성을 포함하도록 widget 속성을 편집해야합니다 (xmlns:android="http://schemas.android.com/apk/res/android").

+0

문제는 android 6.0에 런타임 권한이 필요하다는 것입니다. 런타임시 JavaScript를 사용하여 권한을 요청하려면 어떻게해야합니까? –

+0

JavaScript를 사용하여 명시 적으로 권한을 요청하지 않고도 이미지 선택기 플러그인을 사용할 수 있어야합니다. 권한 요청은 위에 표시된 방법에 따라 자동으로 첫 번째 사용시 한 번만 발생합니다. 사용자가 요청을 거부 한 경우 이미지 픽커 코드에 일반 오류 처리를 추가하여 처리해야합니다. 반환 된 오류 정보는이를 나타냅니다. –

0

나는 같은 문제가 발생했습니다. 요청하는 대화 상자가 나타나지 않습니다. 내 코드에 일부 집중 후 var 권한 = cordova.plugins.permissions DeviceReady() 함수에서 정의 된 및 다른 측면에서 나는 checkPermissionCallback() DeviceReady() 함수에없는 콜백 함수로 호출했다 var 권한은 해당 기능에 정의되어 있지 않습니다 (범위가 다릅니다). 따라서 checkPermissionCallback은 DeviceReady() 함수에 정의되어 있어야합니다.

0

관련 권한 및 기능을 platforms/android/AndroidManifest.xml에 추가하여 표시 권한 요청을 얻을 수있었습니다.

<uses-permission android:name="android.permission.CAMERA" /> 
<uses-permission android:name="android.permission.FLASHLIGHT" /> 
<uses-feature android:name="android.hardware.camera" android:required="true" />