2

I've noticed I get the following issue when someone tries to access my android application from Android 6 (SDK 23):

java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.

Since it will take time to fix this issue, I decided to downgrade my application target SDK to SDK 22.

My questions are:

  1. Is it possible to run "SDK 22 targeted" app in android 6 (SDK 23)?
  2. What are the solutions for the SecurityException above? *I already has the ACCESS_FINE_LOCATION permission granted in my Manifiest

1 Answers1

0

Firstly, a device should be backward compatible (though this is not a blanket statement) Android 6.0 APIs to run the app with a lower SDK. You need to ensure you have the SDK 22 installed in your ide.

The other is there are extra issues regarding permissions for android 6.

See here:

Requesting Permissions at Run Time

And the example taken from there Check For Permissions:

// Assume thisActivity is the current activity
int permissionCheck = ContextCompat.checkSelfPermission(thisActivity,
    Manifest.permission.WRITE_CALENDAR);

And then Request the permissions you need:

// Here, thisActivity is the current activity
if (ContextCompat.checkSelfPermission(thisActivity,
            Manifest.permission.READ_CONTACTS)
    != PackageManager.PERMISSION_GRANTED) {

    // Should we show an explanation?
    if (ActivityCompat.shouldShowRequestPermissionRationale(thisActivity,
        Manifest.permission.READ_CONTACTS)) {

    // Show an expanation to the user *asynchronously* -- don't block
    // this thread waiting for the user's response! After the user
    // sees the explanation, try again to request the permission.

    } else {

    // No explanation needed, we can request the permission.

    ActivityCompat.requestPermissions(thisActivity,
            new String[]{Manifest.permission.READ_CONTACTS},
            MY_PERMISSIONS_REQUEST_READ_CONTACTS);

    // MY_PERMISSIONS_REQUEST_READ_CONTACTS is an
    // app-defined int constant. The callback method gets the
    // result of the request.
    }
}

This answer contains a more comprehensive explanation.

https://stackoverflow.com/a/32084038/3956566

Community
  • 1
  • 1