Текущая широта и долгота не показаны - PullRequest
0 голосов
/ 19 марта 2019

Я делаю приложение в Android Studio, где пользователь может сохранить свои текущие значения широты и долготы в Firebase. Я использую этот код:

public class SaveLocationActivity extends AppCompatActivity implements LocationListener {

TextView saveLatitude, saveLongitude;
Button saveLocationBtn;
FirebaseDatabase firebaseDatabase;
DatabaseReference databaseReference;
LocationManager locationManager;
Double latitude,longitude;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_save_location);

    firebaseDatabase = FirebaseDatabase.getInstance();
    databaseReference = firebaseDatabase.getReference().child("User");

    saveLatitude = findViewById(R.id.saveLatitude);
    saveLongitude = findViewById(R.id.saveLongitude);
    saveLocationBtn = findViewById(R.id.saveLocationBtn);

    if (ContextCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(getApplicationContext(), android.Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

        ActivityCompat.requestPermissions(this, new String[]{android.Manifest.permission.ACCESS_FINE_LOCATION, android.Manifest.permission.ACCESS_COARSE_LOCATION}, 101);

    }

    saveLocationBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            getLocation();
        }
    });

}

public void getLocation() {
    try {
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 1000, 5, SaveLocationActivity.this);
    }
    catch (SecurityException e)
    {
        e.printStackTrace();
    }
}
@Override
public void onLocationChanged(Location location)
{
    latitude=location.getLatitude();
    String latStr=latitude.toString();

    longitude=location.getLongitude();
    String longStr=longitude.toString();

    saveLatitude.setText(latStr);
    saveLongitude.setText(longStr);

    databaseReference.push().setValue("Latitude : "+latStr);
    databaseReference.push().setValue("Longitude : "+longStr);

    Toast.makeText(SaveLocationActivity.this, "Location Saved !!!", Toast.LENGTH_LONG).show();
    Intent i=new Intent(SaveLocationActivity.this,DisplayProfile.class);
    i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
    startActivity(i);
    SaveLocationActivity.this.finish();
}

@Override
public void onStatusChanged(String provider, int status, Bundle extras) {

}

@Override
public void onProviderEnabled(String provider) {

}

@Override
public void onProviderDisabled(String provider) {
    Toast.makeText(SaveLocationActivity.this, "Please Enable GPS and Internet !!!", Toast.LENGTH_SHORT).show();

}
}

Теперь, когда я запускаю это приложение на своем телефоне, оно показывает сообщение «Пожалуйста, включите GPS и Интернет !!!» несмотря на то, что у меня есть мое местоположение в телефоне, а также работающее подключение к интернету. Я на самом деле использую мой домашний Wi-Fi для подключения к интернету. Если кто-нибудь обнаружит ошибку в моем коде, пожалуйста, дайте мне знать, также, пожалуйста, предложите мне возможное решение.

1 Ответ

0 голосов
/ 19 марта 2019

Добавили ли вы эти разрешения в свой манифест?

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...