Java GPS定位仅在应用程序首次打开时起作用

Java GPS定位仅在应用程序首次打开时起作用,java,android,Java,Android,单击按钮时,我试图获取用户的经度和纬度 以下代码在首次安装应用程序时获取GPS,但是,当关闭并重新打开应用程序时,它不会获取任何位置 我不确定我是否错误地编写了获取GPS位置的代码,或者我遗漏了什么。如有任何建议,将不胜感激 public class MainActivity extends AppCompatActivity { private Button button; private EditText editText; private LocationManag

单击按钮时,我试图获取用户的
经度
纬度

以下代码在首次安装应用程序时获取GPS,但是,当关闭并重新打开应用程序时,它不会获取任何位置

我不确定我是否错误地编写了获取GPS位置的代码,或者我遗漏了什么。如有任何建议,将不胜感激

public class MainActivity extends AppCompatActivity {
    private Button button;
    private EditText editText;
    private LocationManager locationManager
    private LocationListener locationListener;

    private double longitude;
    private double latitude;
    private TextView textView;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = (Button) findViewById((R.id.button2));
        editText = (EditText) findViewById((R.id.editText2));

        //My code
        textView = (TextView) findViewById((R.id.textView2));

        locationManager = (LocationManager) getSystemService(LOCATION_SERVICE);
        locationListener = new LocationListener() {
            @Override
            public void onLocationChanged(Location location) {
                longitude = location.getLongitude();
                latitude = location.getLatitude();
                textView.append(("\n" + location.getLatitude() + " " + location.getLongitude()));
            }
            @Override
            public void onStatusChanged(String provider, int status, Bundle extras) {


            }

            @Override
            public void onProviderEnabled(String provider) {

            }

            @Override
            public void onProviderDisabled(String provider) {
                Intent intent = new Intent((Settings.ACTION_LOCATION_SOURCE_SETTINGS));
                startActivity(intent);
            }
        };
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
            if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
               requestPermissions(new String[]{
                       android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.ACCESS_COARSE_LOCATION,
                       android.Manifest.permission.INTERNET
               }, 10);
                //return;
            }
        }
        else {
            configureButton();
        }
        button.setOnClickListener(new OnClickListener()
        {
            public void onClick(View v)
            {
                configureButton();
            }
        });
    }

    @Override
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        switch (requestCode){
            case 10:
                if (grantResults.length>0 && grantResults[0] == PackageManager.PERMISSION_GRANTED){
                    configureButton();
                }
                return;
        }
    }

    private void configureButton() {
       /* button.setOnClickListener(new View.OnClickListener(){
            @Override
            public void onClick(View view){
                locationManager.requestLocationUpdates("gps", 5000, 0, locationListener);

            }
        });*/
        locationManager.requestLocationUpdates("gps", 5000, 0, locationListener);


     }
}

如果用户已授予位置权限,则只需请求位置更新:

    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
        if (ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) != PackageManager.PERMISSION_GRANTED && ActivityCompat.checkSelfPermission(this, Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {

           requestPermissions(new String[]{
                   android.Manifest.permission.ACCESS_FINE_LOCATION,android.Manifest.permission.ACCESS_COARSE_LOCATION,
                   android.Manifest.permission.INTERNET
           }, 10);

        } else {
            //Added:
            locationManager.requestLocationUpdates("gps", 5000, 0, locationListener);
        }
    }
    else {
        locationManager.requestLocationUpdates("gps", 5000, 0, locationListener);
    }

locationManager.RequestLocationUpdate(“gps”,5000,0,locationListener);请求时只调用一次permission@jagapathi你能详细解释一下你的意思吗?你的意思是我需要多次调用RequestLocationUpdate吗?如果是,在哪里?@DanielNugent否。它仅在首次安装时才起作用。