2017-01-20 15 views
1

мне нужно получить расположение в андроиде .... я пишу этот код:вызова требуется разрешение, которое может быть отвергнуто пользователем

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    Button button = (Button) findViewById(R.id.button); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 

      locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 

      if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) 
        !=PackageManager.PERMISSION_GRANTED) 
      { 
       if(ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this,Manifest.permission.ACCESS_FINE_LOCATION)) 
       { 
        Toast.makeText(MainActivity.this,"Comment...",Toast.LENGTH_LONG).show(); 
       } 
       else 
       { 
        ActivityCompat.requestPermissions(MainActivity.this,new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1); 
       } 
      } 
      else 
      { 
       //Call whatever you want 
       myPermissionNeededMethod(); 
      } 
     } 

    }); 
} 
@Override 
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { 
    super.onRequestPermissionsResult(requestCode, permissions, grantResults); 
    switch (requestCode){ 
     case 1: { 
      if((grantResults.length>0) && grantResults[0]==PackageManager.PERMISSION_GRANTED) 
       myPermissionNeededMethod(); 
      else{ 
       // the user deny to giving permission so we ask him again or whatever we need to do ! 
      } 
      return; 

     } 
    } 
} 

в myPermissionNeededMethod() я пишу:

public void myPermissionNeededMethod(){ 
    LocationManager locationManager = (LocationManager) getSystemService(LOCATION_SERVICE); 
    Location location= locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER); 

} 

но снова я получил запрос об ошибке требует разрешения, которое может быть отклонено пользователем .... !!!! если я не могу использовать метод myPermissionNeededMethod(), мне нужно скопировать код в другой раздел в oncreate и onRequestPermissionsResult .... !!!

ответ

1

Это не ошибка. Это предупреждение Линта. Линт не может сказать, что единственные места, где вы звоните myPermissionNeededMethod(), проверяют, что у вас есть это разрешение.

Возможно, это поможет private.

В противном случае, поместите текстовый курсор где-то в коде, который дает вам предупреждение (т.е. имеет красный или желтый undersquiggle), нажмите Alt-Enter, и искать быстрое исправление, которое добавляет @SuppressLint аннотацию , чтобы сообщить Lint прекратить жаловаться на эту проблему. Тогда вам нужно убедиться, что вы вызываете только myPermissionNeededMethod(), когда вы уверены, что уже имеете это разрешение.