无法解析 Manifest.permission.ACCESS_FINE_LOCATION
Cannot resolve Manifest.permission.ACCESS_FINE_LOCATION
向我的清单文件添加权限时,以下 xml 有效。
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
然而,这个xml不起作用。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我应该使用哪一个?如果它是第一个,为什么它不起作用?我该如何解决?
另外,我得到一个 Android 6.0 运行时权限相关异常:
java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
当我尝试将权限添加到字符串数组以检查权限时,Android Studio 告诉我它无法解析以下代码中的 Manifest.permission
:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
为什么要这样做?我该如何解决?
对于第一部分,您应该使用 <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 来了解有关如何在清单中声明权限的更多信息。
关于您的运行时权限问题:
With uses-permissions Cannot resolve that..
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Why?
确保您使用的是 android.Manifest
而不是 my.app.package.Manifest
。很多时候 Android Studio 将默认为后者而不是前者。
因此,您的新代码行将如下所示:
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};
编辑:我重新格式化了我的答案。
编辑 2:小心导入 android.Manifest
。如果您还导入 , 可能会导致问题 my.app.package.Manifest
。除此之外,import android.Manifest
是解决此问题的另一种有效方法。
如果您正在处理动态权限和任何权限,如 ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION 给出错误 "cannot resolve method PERMISSION_NAME" 在这种情况下,使用权限名称编写代码,然后 重建项目 这将 重新生成 清单(Manifest.permission)文件
当您在 Manifest 上按 Alt+Enter 时,Android Studio建议导入几个选项。您应该选择 import android.Manifest;
而不是 import <your.package.name>.Manifest;
.
改变这个
Manifest.permission.ACCESS_FINE_LOCATION
进入这个
android.Manifest.permission.ACCESS_FINE_LOCATION
试试这个:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_SELECT_PICTURE);
return;
}
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mapView.setMyLocationEnabled(true);
}
}
else
{
mapView.setMyLocationEnabled(true);
}
在 运行 之前尝试此操作,确保您有权访问..
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
试试这个!由于 ACCESS_FINE_LOCATION 在以下包中可用,因此添加:
import android.Manifest;
我在使用时遇到了类似的问题;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
无法解析符号 READ_CONTACTS
。
但是在使用时;
import android.Manifest;
开始识别了READ_CONTACT
改变
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
对此
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}
您的问题将得到解决。
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
改为
android.manifest.permission.ACCESS_FINE_LOCATION
如果您已经在清单文件中正确设置了 uses.permissions,正如 hnilsen 已经提到的,只需替换您的行:
Manifest.permission.ACCESS_FINE_LOCATION
来自这个:
android.Manifest.permission.ACCESS_FINE_LOCATION
这可以解决您的问题。
向我的清单文件添加权限时,以下 xml 有效。
<permission android:name="android.permission.ACCESS_FINE_LOCATION" />
然而,这个xml不起作用。
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
我应该使用哪一个?如果它是第一个,为什么它不起作用?我该如何解决?
另外,我得到一个 Android 6.0 运行时权限相关异常:
java.lang.SecurityException: "gps" location provider requires ACCESS_FINE_LOCATION permission.
当我尝试将权限添加到字符串数组以检查权限时,Android Studio 告诉我它无法解析以下代码中的 Manifest.permission
:
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
为什么要这样做?我该如何解决?
对于第一部分,您应该使用 <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 来了解有关如何在清单中声明权限的更多信息。
关于您的运行时权限问题:
With uses-permissions Cannot resolve that..
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
Why?
确保您使用的是 android.Manifest
而不是 my.app.package.Manifest
。很多时候 Android Studio 将默认为后者而不是前者。
因此,您的新代码行将如下所示:
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION};
编辑:我重新格式化了我的答案。
编辑 2:小心导入 android.Manifest
。如果您还导入 , 可能会导致问题 my.app.package.Manifest
。除此之外,import android.Manifest
是解决此问题的另一种有效方法。
如果您正在处理动态权限和任何权限,如 ACCESS_FINE_LOCATION、ACCESS_COARSE_LOCATION 给出错误 "cannot resolve method PERMISSION_NAME" 在这种情况下,使用权限名称编写代码,然后 重建项目 这将 重新生成 清单(Manifest.permission)文件
当您在 Manifest 上按 Alt+Enter 时,Android Studio建议导入几个选项。您应该选择 import android.Manifest;
而不是 import <your.package.name>.Manifest;
.
改变这个
Manifest.permission.ACCESS_FINE_LOCATION
进入这个
android.Manifest.permission.ACCESS_FINE_LOCATION
试试这个:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M && ContextCompat.checkSelfPermission(this, android.Manifest.permission.READ_EXTERNAL_STORAGE) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE}, REQUEST_SELECT_PICTURE);
return;
}
if (Build.VERSION.SDK_INT >= 23) {
if (checkSelfPermission(android.Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED
|| checkSelfPermission(android.Manifest.permission.ACCESS_COARSE_LOCATION) == PackageManager.PERMISSION_GRANTED) {
mapView.setMyLocationEnabled(true);
}
}
else
{
mapView.setMyLocationEnabled(true);
}
在 运行 之前尝试此操作,确保您有权访问..
try {
location = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
} catch (SecurityException e) {
dialogGPS(this.getContext()); // lets the user know there is a problem with the gps
}
试试这个!由于 ACCESS_FINE_LOCATION 在以下包中可用,因此添加:
import android.Manifest;
我在使用时遇到了类似的问题;
ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED
无法解析符号 READ_CONTACTS
。
但是在使用时;
import android.Manifest;
开始识别了READ_CONTACT
改变
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
对此
new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION}
您的问题将得到解决。
new String[]{Manifest.permission.ACCESS_FINE_LOCATION}
改为
android.manifest.permission.ACCESS_FINE_LOCATION
如果您已经在清单文件中正确设置了 uses.permissions,正如 hnilsen 已经提到的,只需替换您的行:
Manifest.permission.ACCESS_FINE_LOCATION
来自这个:
android.Manifest.permission.ACCESS_FINE_LOCATION
这可以解决您的问题。