我正在尝试获取用户的最后一个位置。为此,我已经在manifest xml文件中声明了以下权限。清单中未识别权限声明
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
但在这个代码,它不断出现以下错误:
Code should explicitly check to see if permission is available.
我没有看到这一点,但我无论如何增加了以下检查。
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
这会阻止显示错误,但是当我运行应用程序时,它最终返回。我缺少什么许可?过了一段时间,因为我在Android上工作,我不记得要处理这些额外的检查。明确的许可声明已足够。请咨询我缺少的东西。
代码:
LocationManager locationManager;
String provider;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
provider = locationManager.getBestProvider(new Criteria(), false);
Location location = null;
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Log.i("location", "returned"); // This log will occur
return; //return will occur
}
location = locationManager.getLastKnownLocation(provider); //this is the line that requires permission
Log.i("location", "This log will not occur");
}
你运行什么android版本。请注意,在Android 6中更改权限,请阅读文档。 – Olayinka
@Olayinka我目前使用API 23. – JasSy