无法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类。