Я просто использовал приведенный выше код для получения местоположения. Он просто отлично работает в моем тестовом телефоне nokkia 2, а также в redmi 5a. Но это не работает в некоторых других телефонах
как мото g5, Samsung j6 и т. д.
Я просто проверяю разрешения и все хорошо. Разрешение на местоположение включено,
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
эти пользовательские разрешения предоставляются ....
До сих пор в некоторых телефонах этот код не работает ..
Пожалуйста, помогите мне найти решение.
private void location() {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
Toast.makeText(MainActivity.this, "Turn On Location", Toast.LENGTH_SHORT).show();
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
return;
}else{
Toast.makeText(MainActivity.this, "in", Toast.LENGTH_SHORT).show();
LocationManager mlocManager = (LocationManager) this.getSystemService(Context.LOCATION_SERVICE);
boolean enabled = mlocManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
if (!enabled) {
Toast.makeText(this, "please turn on your location", Toast.LENGTH_LONG).show();
}
locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
Criteria criteria = new Criteria();
locationManager.getProvider(LocationManager.GPS_PROVIDER);
provider = locationManager.getBestProvider(criteria, false);
if (provider != null && !provider.equals("")) {
if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
return;
}
Location location1 = locationManager.getLastKnownLocation(LocationManager.GPS_PROVIDER);
Location location2 = locationManager.getLastKnownLocation(LocationManager.NETWORK_PROVIDER);
Location location3 = locationManager.getLastKnownLocation(LocationManager.PASSIVE_PROVIDER);
final int minTime = 1000;
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, minTime, 0, this);
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, minTime, 0, this);
locationManager.requestLocationUpdates(LocationManager.PASSIVE_PROVIDER, minTime, 0, this);
if (location1 != null) {
onLocationChanged(location1);
} else if (location2 != null) {
onLocationChanged(location2);
} else if (location3 != null) {
onLocationChanged(location3);
} else {
Toast.makeText(getBaseContext(), "network error..", Toast.LENGTH_SHORT).show();
Log.e("TAG", "your location can't get...." + location1);
}
} else {
Toast.makeText(getBaseContext(), "No Provider Found", Toast.LENGTH_SHORT).show();
}
}
}