Error with geolocation in android studio Unable to get provider

1

This is my MapsActivity class

            package com.example.em645.prueba;

            import android.content.Context;
            import android.content.pm.PackageManager;
            import android.location.Location;
            import android.location.LocationListener;
            import android.location.LocationManager;
            import android.support.v4.app.ActivityCompat;
            import android.support.v4.app.FragmentActivity;
            import android.os.Bundle;

            import com.google.android.gms.maps.CameraUpdate;
            import com.google.android.gms.maps.CameraUpdateFactory;
            import com.google.android.gms.maps.GoogleMap;
            import com.google.android.gms.maps.OnMapReadyCallback;
            import com.google.android.gms.maps.SupportMapFragment;
            import com.google.android.gms.maps.model.BitmapDescriptorFactory;
            import com.google.android.gms.maps.model.LatLng;
            import com.google.android.gms.maps.model.Marker;
            import com.google.android.gms.maps.model.MarkerOptions;

            public class MapsActivity extends FragmentActivity implements OnMapReadyCallback {

                private GoogleMap mMap;
                private Marker marcador;
                private double latitud = 0.0, longitud = 0.0;

                @Override
                protected void onCreate(Bundle savedInstanceState) {
                    super.onCreate(savedInstanceState);
                    setContentView(R.layout.activity_maps);
                    SupportMapFragment mapFragment = (SupportMapFragment) getSupportFragmentManager()
                            .findFragmentById(R.id.map);
                    mapFragment.getMapAsync(this);
                }

                @Override
                public void onMapReady(GoogleMap googleMap) {
                    mMap = googleMap;
                    miUbicacion();
                }

                private void agregarMarcador(double lat, double lng) {
                    LatLng coordenadas = new LatLng(lat, lng);
                    CameraUpdate miUbicacion = CameraUpdateFactory.newLatLngZoom(coordenadas, 16);
                    if (marcador != null) marcador.remove();
                    marcador = mMap.addMarker(new MarkerOptions()
                            .position(coordenadas)
                            .title("Mi posicion actual")
                            .icon(BitmapDescriptorFactory.fromResource(R.mipmap.ic_launcher)));
                    mMap.animateCamera(miUbicacion);
                }

                private void actualizarUbicacion(Location location) {
                    if (location != null) {
                        latitud = location.getLatitude();
                        longitud = location.getLongitude();
                        agregarMarcador(latitud, longitud);
                    }
                }

                LocationListener locationListener = new LocationListener() {
                    @Override
                    public void onLocationChanged(Location location) {
                        actualizarUbicacion(location);
                    }

                    @Override
                    public void onStatusChanged(String s, int i, Bundle bundle) {

                    }

                    @Override
                    public void onProviderEnabled(String s) {

                    }

                    @Override
                    public void onProviderDisabled(String s) {

                    }
                };

                private void miUbicacion() {
                    if (ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
                        return;
                    }
                    LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
                    Location location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
                    actualizarUbicacion(location);
                    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,15000,0,locationListener);
                }
            }

and when starting the app it falls down and gives me the following error

12-05 12:05:12.372 32315-32315/com.example.em645.prueba E/AndroidRuntime: FATAL EXCEPTION: main
                                                                                    Process: com.example.em645.prueba, PID: 32315
                                                                                    java.lang.RuntimeException: Unable to get provider com.google.firebase.provider.FirebaseInitProvider: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.example.em645.prueba-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.em645.prueba-2, /vendor/lib, /system/lib]]
                                                                                        at android.app.ActivityThread.installProvider(ActivityThread.java:4810)
                                                                                        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4402)
                                                                                        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4342)
                                                                                        at android.app.ActivityThread.access$1500(ActivityThread.java:138)
                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259)
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                                        at android.os.Looper.loop(Looper.java:136)
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5034)
                                                                                        at java.lang.reflect.Method.invokeNative(Native Method)
                                                                                        at java.lang.reflect.Method.invoke(Method.java:515)
                                                                                        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
                                                                                        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:602)
                                                                                        at dalvik.system.NativeStart.main(Native Method)
                                                                                     Caused by: java.lang.ClassNotFoundException: Didn't find class "com.google.firebase.provider.FirebaseInitProvider" on path: DexPathList[[zip file "/data/app/com.example.em645.prueba-2.apk"],nativeLibraryDirectories=[/data/app-lib/com.example.em645.prueba-2, /vendor/lib, /system/lib]]
                                                                                        at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:56)
                                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:497)
                                                                                        at java.lang.ClassLoader.loadClass(ClassLoader.java:457)
                                                                                        at android.app.ActivityThread.installProvider(ActivityThread.java:4795)
                                                                                        at android.app.ActivityThread.installContentProviders(ActivityThread.java:4402) 
                                                                                        at android.app.ActivityThread.handleBindApplication(ActivityThread.java:4342) 
                                                                                        at android.app.ActivityThread.access$1500(ActivityThread.java:138) 
                                                                                        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1259) 
                                                                                        at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                                        at android.os.Looper.loop(Looper.java:136) 
                                                                                        at android.app.ActivityThread.main(ActivityThread.java:5034) 
                                                                                        at java.lang.reflect.Method.invokeNative(Native Method) 
                                                                                        at java.lang.reflect.Method.invoke(Method.java:515) 

Thanks in advance ..

    
asked by Eduardo Jesus 05.12.2016 в 17:13
source

2 answers

2

Your error is:

  

Caused by: java.lang.ClassNotFoundException: Did not find class   "com.google.firebase.provider.FirebaseInitProvider"

You can downgrade to:

compile 'com.google.android.gms:play-services:8.4.0' 

since it seems that verses 9.2 to 9.4 do not contain the class FirebaseInitProvider

But they suggested you can update Google play services to a revision greater than 30:

    
answered by 05.12.2016 / 17:54
source
1

I have solved it changing in the grandle compile 'com.google.android.gms: play-services: 9.4.0' by compile 'com.google.android.gms: play-services: 8.4.0'

    
answered by 05.12.2016 в 17:27