2016-11-01 2 views
0

그래서 안드로이드 폰에 위치 사용 권한을 요청하고 있습니다. 거부 또는 허용 대화 상자가 나타납니다. 괜찮습니다. 문제는 내가 그 반응을 잡는 방법을 모른다는 것입니다.nativescript-android : "런타임에 위치 권한 요청"

var location_permissions = [ 
     (android as any).Manifest.permission.ACCESS_COARSE_LOCATION, 
     (android as any).Manifest.permission.ACCESS_FINE_LOCATION 
    ]; 

(android.support.v4.app.ActivityCompat as any).requestPermissions( 
    app.android.foregroundActivity, 
    location_permissions, 
    "PERMISSION_LOCATION_REQUEST_CODE" 
); 

// var grantResults = []; 

// (app.android.foregroundActivity as any).onRequestPermissionsResult(
//  app.android.foregroundActivity, 
//  "PERMISSION_LOCATION_REQUEST_CODE", 
//  location_permissions, 
//  grantResults 
//); 

콜백으로 작동 onRequestPermissionsResult 사용에 대한 문서는 것 같아요,이 다음과 같이 내 코드는? (https://developer.android.com/training/permissions/requesting.html) 나는 그것을 거기에 썼다. 그러나 어떻게 그것이 핵심적으로 어떻게 구현되어야하는지 확신하지 못했다. 내가 원하는 것을 cannot read property then of undefined

+0

안녕 Starwave, NativeScript에는 이러한 기능을 제공하는'nativescritp-geolocation'이라는 외부 플러그인이 있습니다. 플러그인을 사용하면'enableLocationRequest (true); - https://github.com/NativeScript/nativescript-geolocation/blob/master/source/location-monitor.d 메소드 하나를 호출하여 필요한 권한을 가질 수 있습니다. ts # L39 –

+0

나는 이미 그것을 사용하고 있지만 위에 언급 한 것처럼 Android 플랫폼 선언을 사용하여이를 수행하는 방법을 알아야하므로 캘린더 나 다른 파일이나 기타 다른 권한을 바인딩 할 수 있습니다. – Starwave

+0

사용할 수 있습니다 더 많은 권한을 요청하거나 플러그인 코드를 예제로 사용하기위한'nativescript-permissions' - https://github.com/NathanaelA/nativescript-permissions/blob/master/permissions.android.js#L118-L179 –

답변

0

검사하는 플러그인 코드와 그것에서 가져온 :이 타이프 라이터와 angular2로 작성되고 있기 때문에, 나는 .then와 응답을 잡을 수 있다고 생각하지만, 오류가 발생합니다

var location_permissions = [ 
     (android as any).Manifest.permission.ACCESS_FINE_LOCATION // no need to define "ACCESS_COARSE_LOCATION", because "ACCESS_FINE_LOCATION" includes permissions to NETWORK_PROVIDER and GPS_PROVIDER 
    ]; 

var activityRequestPermissionsHandler_location = function (data) { 
    //console.log('requestCode: ' + data.requestCode + ' permissions: ' + data.permissions + ' grantResults: ' + data.grantResults); 
    if (data.requestCode === 1) { 
     if (data.grantResults.length > 0 && data.grantResults[0] == android.content.pm.PackageManager.PERMISSION_GRANTED) { 
      console.log("permission granted!!!"); 
     } 
     else { 
      console.log("permission not granted!!!"); 
     } 
    } 
    app.android.off(app.AndroidApplication.activityRequestPermissionsEvent, activityRequestPermissionsHandler_location); 
}; 
app.android.on(app.AndroidApplication.activityRequestPermissionsEvent, activityRequestPermissionsHandler_location); 

(android.support.v4.app.ActivityCompat as any).requestPermissions( 
    app.android.foregroundActivity, 
    location_permissions, 
    1 
);