2017-03-03 2 views
0

안드로이드에서 ACCESS_FINE_LOCATION 및 ACCESS_COARSE_LOCATION에 대한 권한을 얻고 싶습니다만, 어떤 이유로 든 ACCESS_COARSE_LOCATION에 대한 권한 만 부여합니다.안드로이드에서 ACCESS_FINE_LOCATION 권한을 얻을 수 없습니다.

내 활동

final int PERMISSION_ALL = 1; 
String[] PERMISSIONS = {ACCESS_FINE_LOCATION,ACCESS_COARSE_LOCATION}; 

if(!hasPermissions(this, PERMISSIONS)){ 
     System.out.println("=========================================nottttt========================================================"); 
     ActivityCompat.requestPermissions(this, PERMISSIONS, PERMISSION_ALL); 
    } 



@Override 
public void onRequestPermissionsResult(int requestCode, String PERMISSIONS[], int[] grantResults) { 
    System.out.println("==================requesttttttttttttttttttttttttttttttttttttttttttttttttttttttttttttt"); 

    switch (requestCode) { 
     case PERMISSION_ALL: { 
      System.out.println("lengthhhhhhhhhhhhhhhhhhhhhh"+PERMISSIONS.length); 
      for (int i = 0; i < PERMISSIONS.length; i++) { 
       String permission = PERMISSIONS[i]; 
       if (grantResults[i] == PackageManager.PERMISSION_GRANTED) { 
        System.out.println(permission + "is alreadyyyyyyyyyyyyy grantedddddddddddddddd"); 
       } else { 
        System.out.println(permission + "is not grantedddddddddddddddd"); 

       } 
       return; 
      } 

     } 
    } 
} 


public static boolean hasPermissions(Context context, String[] permissions) { 
    if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && context != null && permissions != null) { 
     for (String permission : permissions) { 
      if (ActivityCompat.checkSelfPermission(context, permission) != PackageManager.PERMISSION_GRANTED) { 
       return false; 
      } 
     } 
    } 
    return true; 
} 

안드로이드 매니페스트 : 나는 응용 프로그램을 시작

<user-permission android:name="android.permission.ACCESS_COARSE_LOCATION" /> 
<user-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> 

, 나는 위치에 액세스 권한을 부여하라는 메시지가하고, 난 네 선택하지만 ACCESS_FINE_LOCATION은 granted.Can 아니다 누군가 제가 문제를 찾도록 도와 주시겠습니까?

+0

갑자기 변경 사항이 없으면 괜찮은 위치가 부여됩니다. 아무도 왜 이상한 동작이 발생했는지 알 수 있습니까? –

답변

0

사용자가 이러한 사용 권한 중 하나에 대한 사용 권한을 부여하면 다른 사용 권한도 부여됩니다. 당신은 그들 중 하나가 부여 될 수없고 다른 하나는 부여되지 않을 수 있습니다.

+0

그러나 onRequestPermissionResult의 인쇄물이 부여되지 않은 ACCES_FINE_LOCATION 권한을 찾는 이유는 무엇입니까? –

+0

부여하기 전에 부여 여부를 확인할 수 있습니까? – Ruben2112

+0

화면의 각 터치 후 콘솔에서 인쇄물을 확인하고 ii 권한 부여 후 ony 권한이 부여되지 않기 때문에 그럴 수 없다고 생각합니다. –

0

ACCESS_FINE_LOCATION 권한이 앱이 GPS 및 네트워크 위치 제공 업체를 사용할 수 있도록 허용합니다. 그러나 네트워크 제공 업체는 거친 위치 제공 업체입니다. 그래서 ACCESS_FINE_LOCATION을 먼저 요청하면 자동으로 ACCESS_COARSE_LOCATION 권한을 요청합니다.

관련 문제