Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 993
Pablo Cegarra Avatar asked Dec 07 '15 16:12

Pablo Cegarra


People also ask

What is the purpose of setting the user permission for Access_fine_location?

If your app needs to access the user's location, you must request permission by adding the relevant Android location permissions to your app. Android offers two location permissions: ACCESS_COARSE_LOCATION and ACCESS_FINE_LOCATION . The permission you choose determines the accuracy of the location returned by the API.

What does Read_phone_state permission do?

Allows read only access to phone state, including the phone number of the device, current cellular network information, the status of any ongoing calls, and a list of any PhoneAccounts registered on the device. Used to determine the state of the mobile app. Jacob to provide additional details on exact functions.


1 Answers

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.

Edit 2: Be wary of importing android.Manifest. It can cause issues if you're also importing my.app.package.Manifest. Other than that import android.Manifest is another valid way to resolve this issue.

like image 130
sonictt1 Avatar answered Sep 23 '22 07:09

sonictt1