0

GPS が有効な場合にのみコードを実行するアプリを開発しています。

このコードを使用して GPS をチェックしています。

isGPSEnabled = locationManager
                .isProviderEnabled(LocationManager.GPS_PROVIDER);

そして今、私はそれを次のように使用しています:

if (isGPSEnabled) {
            gps_off.setVisibility(View.INVISIBLE);
            ReactiveLocationProvider locationProvider = new ReactiveLocationProvider(getBaseContext());
            locationProvider.getLastKnownLocation()
                    .subscribe(new Action1<Location>() {
                        @Override
                        public void call(Location location) {
                            currentLatDoubleA = location.getLatitude();
                            currentLngDoubleA = location.getLongitude();
                            Toast.makeText(getBaseContext(), "User's location retrieved", Toast.LENGTH_SHORT).show();
                        }
                    });
//        }
            Handler handler = new Handler();
            handler.postDelayed(new Runnable() {
                @Override
                public void run() {
                    retrieveHRequest();
                }
            }, 2000);
        } else {
            gps_off.setVisibility(View.VISIBLE);
            Snackbar snackbar = Snackbar
                    .make(coordinatorLayout, "No location detected!", Snackbar.LENGTH_LONG)
                    .setAction("RETRY", new View.OnClickListener() {
                        @Override
                        public void onClick(View view) {

                            ifLocationAvailable();
                        }
                    });
            snackbar.setDuration(Snackbar.LENGTH_INDEFINITE);
            snackbar.show();
        }

問題は、GPS をオンにした後でも、GPS がオフのときに実行されるはずのコードが、GPS がオンのときでも実行されていることを意味するメッセージを表示するSnackbarポップアップが表示されることです。No location detected!

もう1つ注意すべきことは、アプリを閉じてから再度開くと、GPSがオンのときに実行されるはずのコードが問題なく実行されることです.

ここで何がうまくいかないのですか?

私にお知らせください。

4

1 に答える 1