Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

Dúvida com a permissão

Olá! Tentei fazer o exercício , mas agora estou recebendo diversos erros. Aqui estão minhas classes: MapaFragment.java: O erro está no new Localizador, pois estou passando um GoogleMap e deveria passar um MapaFragment

public class MapaFragment extends MapFragment implements OnMapReadyCallback {
    private GoogleMap mapa;

    @Override
    public void onCreate(Bundle bundle) {
        super.onCreate(bundle);
        getMapAsync(this);
    }

    @Override
    public void onMapReady(GoogleMap googleMap) {
        this.mapa = mapa;
        LatLng posicaoDaEscola = pegaCoordenadaDoEndereco("Rua Vergueiro 3185, Vila Mariana, São Paulo");
        if (posicaoDaEscola != null) {
            centralizaEm(posicaoDaEscola);
        }

        AlunoDAO alunoDAO = new AlunoDAO(getContext());
        for (Aluno aluno: alunoDAO.buscaAlunos()) {
            LatLng coordenada = pegaCoordenadaDoEndereco(aluno.getEndereco());
            if (coordenada != null) {
                MarkerOptions marcador = new MarkerOptions();
                marcador.position(coordenada);
                marcador.title(aluno.getNome());
                marcador.snippet(String.valueOf(aluno.getNota()));
                googleMap.addMarker(marcador);
            }
        }
        alunoDAO.close();
        new Localizador(getContext(), googleMap);
    }

    public void centralizaEm(LatLng coordenada) {
        if (mapa != null) {
            CameraUpdate update = CameraUpdateFactory.newLatLngZoom(coordenada, 17);
            mapa.moveCamera(update);
        }
    }

    private LatLng pegaCoordenadaDoEndereco(String endereco) {
        try {
            Geocoder geocoder = new Geocoder(getContext());
            List<Address> resultados = geocoder.getFromLocationName(endereco, 1);
            if (!resultados.isEmpty()) {
               return new LatLng(resultados.get(0).getLatitude(),resultados.get(0).getLongitude());
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }
}

Localizador.java: Como citado na própria aula, o problema é não pedir a permissão para o usuário

MapaActivity.java: O Android Studio reclama que não consegue resolver os símbolos "ACCESS_COARSE_LOCATION" e "ACCESS_FINE_LOCATION"

public class MapaActivity extends AppCompatActivity {
    private static final int REQUEST_PERMISSOES = 1;
    private MapaFragment mapaFragment;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_mapa);

        FragmentManager fragmentManager = getFragmentManager();
        FragmentTransaction tx = fragmentManager.beginTransaction();
        mapaFragment = new MapaFragment();
        tx.replace(R.id.frame_mapa, mapaFragment);
        tx.commit();

        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) {
                String[] permissoes = {Manifest.permission.ACCESS_COARSE_LOCATION, Manifest.permission.ACCESS_FINE_LOCATION};
                requestPermissions(permissoes, REQUEST_PERMISSOES);
            }
        }
    }
    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == REQUEST_PERMISSOES) {
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED &&
                    grantResults[1] == PackageManager.PERMISSION_GRANTED) {
                new Localizador(this, mapaFragment);

O que faço? Obrigado!

4 respostas

Se alguém precisar de mais alguma parte do código é só avisar que eu mando, pois o post não pode ter mais de 5000 caracteres! Aguardando resposta

Ninguém pode me ajudar?

solução!

Oi Gabriel, tudo bem ?

Consegue me mandar um print para eu entender o que tá rolando ? Seu código não devia apresentar problemas.

Oi Matheus, foi um bug momentâneo, persistiu por um tempo, mas fiz rebuild do gradle e voltou a funcionar. De qualquer forma, obrigado pela paciência