pcg26 pcg26 - 5 months ago 67
Android Question

Cannot resolve Manifest.permission.ACCESS_FINE_LOCATION

When adding permissions to my manifest file, the below xml works.

<permission android:name="android.permission.ACCESS_FINE_LOCATION" />


However, this xml doesn't work.

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


Which one am I supposed to be using? If it's the first one, why wouldn't it work? How can I fix it?

Also, I am getting an Android 6.0 runtime permissions related exception:

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


When I try to add the permission to a String array in order to check the permission, Android Studio tells me it can't resolve
Manifest.permission
in the below code:

new String[]{Manifest.permission.ACCESS_FINE_LOCATION}


Why would it be doing this? How can I fix it?

Answer

For the first part, you should be using <uses-permission> according the the Android Devlopers site. Try making sure you declare your permissions directly under the <manifest> tag, not in your <application> tag. It's hard to know what your problem is without seeing your entire manifest file. Check out the link I posted above for more info on how to declare permissions in your manifest.

In regards to your runtime permissions problem:

With uses-permissions Cannot resolve that..

new String[]{Manifest.permission.ACCESS_FINE_LOCATION}

Why?

Make sure you're using android.Manifest instead of my.app.package.Manifest. A lot of times Android Studio will default to the latter instead of the former.

So, your new line of code would look like:

new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};

Edit: I reformatted my answer.

Comments