-1

When I start my LocationService on a device with Android Version 6.0 or heigher I get following error:

java.lang.SecurityException: Client must have ACCESS_FINE_LOCATION permission to request PRIORITY_HIGH_ACCURACY locations. at android.os.Parcel.readException(Parcel.java:1620) at android.os.Parcel.readException(Parcel.java:1573) at com.google.android.gms.internal.ni$a$a.a(Unknown Source) at com.google.android.gms.internal.nj.a(Unknown Source) at com.google.android.gms.internal.nk.a(Unknown Source) at com.google.android.gms.internal.nf$1.a(Unknown Source) at com.google.android.gms.internal.nf$1.a(Unknown Source) at com.google.android.gms.common.api.BaseImplementation$a.b(Unknown Source) at com.google.android.gms.common.api.c.a(Unknown Source) at com.google.android.gms.common.api.c.b(Unknown Source) at com.google.android.gms.internal.nf.requestLocationUpdates(Unknown Source) at com.google.android.gms.internal.jm.f(Unknown Source) at com.google.android.gms.common.api.c.gJ(Unknown Source) at com.google.android.gms.common.api.c.d(Unknown Source) at com.google.android.gms.common.api.c$2.onConnected(Unknown Source) at com.google.android.gms.internal.jm.f(Unknown Source) at com.google.android.gms.internal.jm.dU(Unknown Source) at com.google.android.gms.internal.jl$h.b(Unknown Source) at com.google.android.gms.internal.jl$h.g(Unknown Source) at com.google.android.gms.internal.jl$b.hy(Unknown Source) at com.google.android.gms.internal.jl$a.handleMessage(Unknown Source) at android.os.Handler.dispatchMessage(Handler.java:102) at android.os.Looper.loop(Looper.java:148) at android.app.ActivityThread.main(ActivityThread.java:5466) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)

I have set the needed premissions in the Manifest.xml! Then I read that the premissions are handeled different on Android 6.0, but how can I ask the user to accept or set the needed premissions for the App?

Any suggestions?

ReshaD
  • 936
  • 2
  • 18
  • 30
madrid11
  • 43
  • 1
  • 6

1 Answers1

2

First check if the permission is already granted

if (ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
        requestPermissions(new String[]{Manifest.permission.CAMERA}, 108);
        return;
    } else {
        //continueYourTask
}

If not granted it automatically shows a dialog to grant access and when granted a call back is received as

@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
    switch (requestCode) {
        case 108:
            if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                //continueYourTask
            }
            break;
        default:
            super.onRequestPermissionsResult(requestCode, permissions, grantResults);
    }
}
Logic
  • 2,230
  • 2
  • 24
  • 41