无法parsingManifest.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运行时权限相关的exception:

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

当我尝试将权限添加到string数组以检查权限时,Android Studio告诉我无法parsing以下代码中的Manifest.permission

 new String[]{Manifest.permission.ACCESS_FINE_LOCATION} 

为什么要这样做呢? 我该如何解决?

对于第一部分,您应该根据Android Devlopers站点使用<uses-permission> 。 尝试确保直接<manifest>标记下声明权限,而不是在<application>标记中声明权限。 没有看到你的整个清单文件,很难知道你的问题是什么。 查看我上面发布的链接 ,了解如何在清单中声明权限的更多信息。

关于您的运行时权限问题:

使用权限无法解决..

新的string[] {Manifest.permission.ACCESS_FINE_LOCATION}

为什么?

确保你使用的是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是解决此问题的另一种有效方法。

改变这一点

Manifest.permission.ACCESS_FINE_LOCATION

进入这个

android.Manifest.permission.ACCESS_FINE_LOCATION

尝试这个! 由于ACCESS_FINE_LOCATION在以下包中可用,所以添加:

 import android.Manifest; 

如果您正在使用dynamic权限和ACCESS_FINE_LOCATION等任何权限,则ACCESS_COARSE_LOCATION会提供错误“无法parsing方法PERMISSION_NAME”,在这种情况下,请使用权限名称编写代码,然后重新 生成 项目,这将重新生成清单(Manifest.permission)文件

我使用过类似的问题;

 ContextCompat.checkSelfPermission(MainActivity.this,Manifest.permission.READ_CONTACTS) != PackageManager.PERMISSION_GRANTED 

它无法parsing符号READ_CONTACTS

然而在使用;

 import android.Manifest; 

它开始识别READ_CONTACT

  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 } 

更改

 new String[]{Manifest.permission.ACCESS_FINE_LOCATION} 

对此

 new String[]{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; } 

当您input“Manifest”时,Android Studio应该build议您selectManifest的几个选项。 你应该select一个开始的android而不是你的项目的名称。

如果你访问Manifest.java的引用,你会发现在“Permission”类中只有1-2行,那么你引用了错误的manifest类。