I have a error when I'm trying to get last known location in Android 6.0
Location lastLocation =locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Error:
java.lang.SecurityException: "network" location provider requires ACCESS_COARSE_LOCATION or ACCESS_FINE_LOCATION permission.
My manifest:
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<uses-permission android:name="android.permission.CHANGE_WIFI_STATE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
<uses-permission android:name="android.permission.WRITE_SETTINGS"/>
check permissions:
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);
if (ActivityCompat.checkSelfPermission(context,
Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED
&& ActivityCompat.checkSelfPermission(context, Manifest.permission.ACCESS_COARSE_LOCATION)
!= PackageManager.PERMISSION_GRANTED) {
try {
ActivityCompat.requestPermissions(getActivity(), new String[] {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION },
1);
} catch (Exception e) {
e.printStackTrace();
}
}
PointDTO point = new PointDTO();
try {
Location lastLocation = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
// addresses = geocoder.getFromLocation(lat, lon, 1);
// // String cityName = addresses.get(0).getAddressLine(0);
// // String countryName = addresses.get(0).getAddressLine(2);
// address= addresses.get(0).getAddressLine(0);
point.setLat(lastLocation.getLatitude());
point.setLon(lastLocation.getLongitude());
} catch (NullPointerException | SecurityException e) {
e.printStackTrace();
}
return point;
What I did wrong? It works in Android Api 23-
UPD:
NPE:
ActivityCompat.requestPermissions(getActivity(), new String[] {
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.ACCESS_COARSE_LOCATION },
1);
SecurityException
LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);