我是新的Android开发人员,一开始我试图访问手机的位置
我做了checkselfpermission
,但它没有帮助,它还没有编译给我
我在这里检查是否有权限,如果没有,我会要求:
protected void getLocation() {
if (ContextCompat.checkSelfPermission(this,
Manifest.permission.ACCESS_FINE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(this,
Manifest.permission.ACCESS_FINE_LOCATION)) {
} else {
ActivityCompat.requestPermissions(this,
new String[]{Manifest.permission.ACCESS_FINE_LOCATION},
MY_PERMISSIONS_REQUEST_LOCATION);
}
}
}
我在这里尝试访问该位置,但该行中存在异常:
location = locationManager.getLastKnownLocation(provider);
:
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case MY_PERMISSIONS_REQUEST_LOCATION:
{
if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
// Get the location manager
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
// Define the criteria how to select the locatioin provider -> use
// default
Criteria criteria = new Criteria();
provider = locationManager.getBestProvider(criteria, false);
location = locationManager.getLastKnownLocation(provider);
onLocationChanged(location);
Toast.makeText(getApplicationContext(), "Location recived.",
Toast.LENGTH_LONG).show();
} else {
Toast.makeText(getApplicationContext(),
"Can't track your location.", Toast.LENGTH_LONG).show();
return;
}
}
我将感谢你们的任何帮助
答案 0 :(得分:0)
您是否已在清单
中写下这些权限<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
答案 1 :(得分:0)
确保您已在permissions
档案中声明manifest
-
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
您也必须检查两者的运行时权限。