Нашёл пробемму
package com.example.getlocation;
import androidx.appcompat.app.AppCompatActivity;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import android.Manifest;
import android.content.Context;
import android.location.Location;
import android.location.LocationListener;
import android.location.LocationManager;
import android.os.Bundle;
import android.os.Looper;
public class MainActivity extends AppCompatActivity {
int PERMISSION_REQUEST = 1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// Получаем права на доступ к локацие
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)==-1){
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST);
System.out.println(" -- УПС");
}
// Как дождаться принятия решения пользователем?
//Поток определения локации
Thread MyThread = new Thread(MyGetLocationThread);
MyThread.start();
}
// Поток определения локации
Runnable MyGetLocationThread = new Runnable() {
public void run() {
Looper.prepare();
LocationListener myLocationListener;
LocationManager myLocationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
myLocationListener = new LocationListener() {
@Override
public void onLocationChanged(Location location) {
double Longitude = location.getLongitude(); // Долгота
double Latitude = location.getLatitude(); // Широта
System.out.println(Latitude+" -- "+Longitude);
}
@Override
public void onStatusChanged(String s, int i, Bundle bundle) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void onProviderEnabled(String s) {
//To change body of implemented methods use File | Settings | File Templates.
}
@Override
public void onProviderDisabled(String s) {
//To change body of implemented methods use File | Settings | File Templates.
}
};
// Запрос разрешения у пользователя на доступ к локации
// this был заменен на MainActivity.this
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)==0){
myLocationManager.requestLocationUpdates(LocationManager.GPS_PROVIDER, 100, 0, myLocationListener);
}
Looper.loop();
}
};
}
Надо было лупер повешать
Есть ещё вопрос
// Получаем права на доступ к локацие
if(ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.ACCESS_FINE_LOCATION)==-1){
ActivityCompat.requestPermissions(MainActivity.this, new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, PERMISSION_REQUEST);
System.out.println(" -- УПС");
}
// Как дождаться принятия решения пользователем?
Упс выполняется не линейно, тоесть, я ещё на принял решение по запросу requestPermissions, а приложение уже идет работать дальше. Не ждёт ответа от пользователя. Может кто знает, как приостановить программу, до момента принятия решения. Спасибо.