Problems with ACCESS FINE LOCATION permission

1

I am trying to give permissions in time of use. The permission I want to give is the location.

I do the following I define in the Manifest

 <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"></uses-permission>
 <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"></uses-permission>

In my MainActivity class I put this (inside the Oncreate method)

   locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);

    if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED) {

        if (ActivityCompat.shouldShowRequestPermissionRationale(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION) && ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION)!= PackageManager.PERMISSION_GRANTED ) {

        } else {

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

        }
    }

    locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 3000, 10, this);
    locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 3000, 10, this);

and then I write outside the oncreate method the next one

    @Override
    public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    if (requestCode == 1000) {
        if (permissions.length == 0 && permissions[0] == Manifest.permission.ACCESS_FINE_LOCATION && grantResults[0] == PackageManager.PERMISSION_GRANTED) {

        } else {

        }
    }

But when I run for the first time I get this error

com.Localizador.gpssms E/AndroidRuntime: FATAL EXCEPTION: main
                                                                   Process: com.Localizador.gpssms, PID: 7819
                                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{com.Localizador.gpssms/com.Localizador.gpssms.MainActivity}: java.lang.SecurityException: "network" location provider requires ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission.
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3319)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415)
                                                                       at android.app.ActivityThread.access$1100(ActivityThread.java:229)
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821)
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102)
                                                                       at android.os.Looper.loop(Looper.java:148)
                                                                       at android.app.ActivityThread.main(ActivityThread.java:7325)
                                                                       at java.lang.reflect.Method.invoke(Native Method)
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
                                                                    Caused by: java.lang.SecurityException: "network" location provider requires ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission.
                                                                       at android.os.Parcel.readException(Parcel.java:1620)
                                                                       at android.os.Parcel.readException(Parcel.java:1573)
                                                                       at android.location.ILocationManager$Stub$Proxy.requestLocationUpdates(ILocationManager.java:712)
                                                                       at android.location.LocationManager.requestLocationUpdates(LocationManager.java:908)
                                                                       at android.location.LocationManager.requestLocationUpdates(LocationManager.java:469)
                                                                       at com.unprofesorya.gpssms.MainActivity.onCreate(MainActivity.java:45)
                                                                       at android.app.Activity.performCreate(Activity.java:6904)
                                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1136)
                                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3266)
                                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3415) 
                                                                       at android.app.ActivityThread.access$1100(ActivityThread.java:229) 
                                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1821) 
                                                                       at android.os.Handler.dispatchMessage(Handler.java:102) 
                                                                       at android.os.Looper.loop(Looper.java:148) 
                                                                       at android.app.ActivityThread.main(ActivityThread.java:7325) 
                                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                                       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230) 
                                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120) 

If you can tell me how to remove the error, copy the code as it is in the examples of android

    
asked by YANINA 15.06.2017 в 06:05
source

1 answer

0

The problem is that the permissions were not really assigned,

You could manually request them in your Activity within the onCreate() method in this way:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {

    if (ContextCompat.checkSelfPermission(this, android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED){
        Log.i("Permisos", "Se tienen los permisos!");
    } else {
        ActivityCompat.requestPermissions(
                this, new String[] { android.Manifest.permission.ACCESS_COARSE_LOCATION, android.Manifest.permission.ACCESS_FINE_LOCATION }, 1222);
    }
}
    
answered by 15.06.2017 / 06:19
source