我正试图找到以下一行:
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 0, 0, this);
工作室将其标记为“错误”,并建议检查是否已设置所有权限或处理SecurityException。
我认为我已经设置了所有必要的权限:
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
但是,它仍然不起作用。
有人遇到同样的问题吗? 提前谢谢!
答案 0 :(得分:0)
你可以使用这些代码。在android studio中你必须在运行时检查动态权限
if (Build.VERSION.SDK_INT >= 23 &&
ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED &&
ContextCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
ActivityCompat.requestPermissions(getActivity(),
new String[]{Manifest.permission.ACCESS_FINE_LOCATION, Manifest.permission.ACCESS_COARSE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
} else {
getLocation();
}
和
@Override
public void onRequestPermissionsResult(int requestCode, String[] permissions, int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION:
// If request is cancelled, the result arrays are empty.
if (grantResults.length > 0
&& grantResults[0] == PackageManager.PERMISSION_GRANTED) {
getLocation();
}
break;
}
}
答案 1 :(得分:0)
这是因为在Marshmallow中,在运行时向用户询问权限。因此我们需要处理用户是否已授予该特定权限。
答案 2 :(得分:0)
添加以下两项权限:
<uses-permission android:name="android.permission.WAKE_LOCK"/>
<uses-permission android:name="android.permission.INTERNET"/>