Я пытаюсь показать текущий адрес пользователя в EditText.Поэтому я использую менеджер местоположения и LocationListener.Приложение компилируется так, как должно ... но EditText не показывает ничего, кроме подсказки.Мне кажется, что приложение даже не входит в оператор try {} ?!Конечно, я дал приложению разрешение на использование моего местоположения ... У меня проблема на реальном устройстве ... В эмуляторе приложение работает нормально.Также, когда я меняю расположение на эмуляторе, ничего не происходит.Logcat показывает только местоположение (долгота, широта и т. Д.), Определенное в методе OnlocationChanged.Почему мой адрес не отображается?
Манифест
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION">
</uses-permission>
<uses-permission android:name="android.permission.INTERNET">
</uses-permission>
Часть моей деятельности, в которой я хочу показать адрес:
public class NavActivity extends AppCompatActivity implements NavigationView.OnNavigationItemSelectedListener {
private AppBarConfiguration mAppBarConfiguration;
private FirebaseAuth firebaseAuth;
public EditText Position;
LocationManager locationManager;
LocationListener locationListener;
@Override
public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
super.onRequestPermissionsResult(requestCode, permissions, grantResults);
if(grantResults.length>0 && grantResults[0]==PackageManager.PERMISSION_GRANTED){
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)==PackageManager.PERMISSION_GRANTED){
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
}
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_nav);
Toolbar toolbar = findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
FloatingActionButton fab = findViewById(R.id.fab);
fab.setOnClickListener(new View.OnClickListener() {
//Some more Lines of nonrelated Code
//...
firebaseAuth=FirebaseAuth.getInstance();
//Anfang Location
locationManager=(LocationManager)this.getSystemService(Context.LOCATION_SERVICE);
locationListener=new LocationListener() {
@Override
public void onLocationChanged(Location location) {
Log.i("Location:",location.toString());
Geocoder geocoder=new Geocoder(getApplicationContext(), Locale.getDefault());
try{
List<Address> listAdresses=geocoder.getFromLocation(location.getLatitude(),location.getLongitude(),1);
if(listAdresses != null && listAdresses.size()>0){
String adress=" ";
if(listAdresses.get(0).getPostalCode() != null){
adress += listAdresses.get(0).getPostalCode()+" ";
}
if(listAdresses.get(0).getSubThoroughfare() != null) {
adress += listAdresses.get(0).getSubThoroughfare() + " ";
}
if(listAdresses.get(0).getCountryName() != null) {
adress += listAdresses.get(0).getCountryName() + " ";
}
if(listAdresses.get(0).getSubLocality() != null) {
adress += listAdresses.get(0).getSubLocality() + " ";
}
if(listAdresses.get(0).getThoroughfare() != null) {
adress += listAdresses.get(0).getThoroughfare() + " ";
}
Toast.makeText(NavActivity.this,adress,Toast.LENGTH_SHORT).show();
Log.i("Standort",adress);
Position = (EditText)findViewById(R.id.myEditDAdresse);
Position.setText("Standort:"+ adress);
}
}catch(Exception e){
Position = (EditText)findViewById(R.id.myEditDAdresse);
Position.setText("Standortsuche fehlgeschlagen");
}
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
}
@Override
public void onProviderEnabled(String s) {
}
@Override
public void onProviderDisabled(String s) {
}
};
if(ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION)!= PackageManager.PERMISSION_GRANTED){
ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION},1);
}else{
locationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER,0,0,locationListener);
}
}
//Ende Location