2016-08-22 4 views
0

내 앱이 타켓 버전 22를 사용하고 있습니다. manifest 파일에서 FINE_LOCATION 권한을 언급했습니다. Android 6.0.1에서 앱을 실행할 때 현재 위치를 표시하는 내지도보기에서 정상적으로 작동합니다. 하지만 사용자가 앱 설정에서 권한을 "거부"하면 앱이 권한 예외로 인해 충돌하기 시작합니다. 위치 액세스 거부 설정에서 항상 수락 허가 됨 (0) - Android

내가 코드

if ((ContextCompat.checkSelfPermission(activity, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED)) 
        ActivityCompat.requestPermissions(activity, new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, REQUEST_LOCATION_PERMISSION); 
      } 

이하로 사용하고 있습니다하지만이 코드는 항상 PackageManager.PERMISSION_GRANTED를 반환. 누군가이 문제를 해결하는 데 도움을 줄 수 있습니까?

나는 이미이 링크를 통해 갔어요 - Understanding the Android 6 permission method Request Permission at Runtime for Android Marshmallow 6.0

+0

Androidmainfest에서 사용한 항목은 무엇입니까? –

+0

<사용 권한 android : name = "android.permission.ACCESS_FINE_LOCATION"/> <사용 권한 android : name = "android.permission.ACCESS_COARSE_LOCATION"/> – Pankaj

답변

0

는 그것은 PermissionChecker를 사용하여 해결합니다. PermissinChecker는 빌드 버전이 23 미만인 경우 Granted/Deny를 반환합니다.

if(Build.VERSION.SDK_INT >= 23){ 
    int permissionStatus = PermissionChecker.checkSelfPermission(context, permission); 
    if(permissionStatus != PackageManager.PERMISSION_GRANTED){ 
     ActivityCompat.requestPermissions(context, new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, 101); 
     return false; 
    } 
}