Por mais que eu implemente o método onRequestPermissionsResult() com as condições para as permissões, eu não consigo abrir o mapa logo após clicar em permitir, ou seja, tenho que clicar no mapa, clicar em permitir e depois em mapa de novo, para aí sim abrir o mapa.
O que estou fazendo de errado?
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case REQUEST_PERMISSOES:
if(grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){
chamaMapa();
}
break;
}
}
Segue também classe MapaActivity completa:
public class MapaActivity extends AppCompatActivity {
private static final int REQUEST_PERMISSOES = 1;
private FragmentManager manager;
private FragmentTransaction tx;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_mapa);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED
|| ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[] {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION}, REQUEST_PERMISSOES);
finish();
}
chamaMapa();
}
}
private void chamaMapa() {
manager = getSupportFragmentManager();
tx = manager.beginTransaction();
tx.replace(R.id.frame_mapa, new MapaFragment());
tx.commit();
}
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
switch (requestCode){
case REQUEST_PERMISSOES:
if(grantResults[0] == PackageManager.PERMISSION_GRANTED && grantResults[1] == PackageManager.PERMISSION_GRANTED){
chamaMapa();
}
break;
}
}
}