2016-05-27 4 views
0

Я пытаюсь понять, как запросить разрешения на выполнение в android для «опасных прав», таких как Location.Android - запрос разрешений времени выполнения

Что я понимаю, что код должен идти как этот

public void checkPermission(){ 
    if (ActivityCompat.checkSelfPermission(..) == PackageManager.PERMISSION_GRANTED){ 

    getLocation(); 

    } else { 

    ActivityCompat.requestPermissions(..); 

    } 
} 

public void onRequestPermissionsResult(..){ 
    switch (requestCode) { 
    case MY_PERMISSIONS_REQUEST: { 
     if (..) { 
       // permission was granted, yay! 
       getLocation(); 
      } else { 
       // permission denied, boo! 
      } 
      return; 
     } 
    } 
} 

public Location getLocation(){ 
    locationManager.requestLocationUpdates(..) 
    .. 
} 

Дело в том, этот код дает мне ошибку на locationManager говорит мне, что я должен просить разрешения РАСПОЛОЖЕНИЕ

Так что же такое proplem с этой последовательностью?

ответ

0

Попробуйте это, он работал для меня

private void checkPermission() { 
    if (ContextCompat.checkSelfPermission(this, 
      Manifest.permission.ACCESS_FINE_LOCATION) 
      != PackageManager.PERMISSION_GRANTED && ContextCompat.checkSelfPermission(this, 
      Manifest.permission.ACCESS_COARSE_LOCATION) 
      != PackageManager.PERMISSION_GRANTED) { 

     ActivityCompat.requestPermissions(this, 
       new String[]{Manifest.permission.ACCESS_FINE_LOCATION,Manifest.permission.ACCESS_COARSE_LOCATION}, 
       MY_PERMISSIONS_REQUEST_FINE_LOCATION); 

    } else { 
     getLocation(); 
    } 
} 

@Override 
public void onRequestPermissionsResult(int requestCode, 
             String permissions[], int[] grantResults) { 
    switch (requestCode) { 
     case MY_PERMISSIONS_REQUEST_FINE_LOCATION: { 
      // If request is cancelled, the result arrays are empty. 
      if (grantResults.length > 0 
        && grantResults[0] == PackageManager.PERMISSION_GRANTED) { 
       // permission was granted, yay! Do the 
       // contacts-related task you need to do. 
      getLocation(); 
      } else { 
       // permission denied, boo! Disable the 
      } 
      return; 
     } 
    } 
} 
+0

Ваш код правильный, и мой тоже, но моя проблема заключается в методе getlocation, когда я попробовать использовать locationManger, он переспрашивает для разрешения –

+0

@ Ахмад Бассиуни, да, он попросит – Nisarg

Смежные вопросы