0
votes

besoin de vérifier si GPS est activé ou non

Je fais une application dans laquelle le clic de bouton passe de 1 activité à la 2e activité sur laquelle j'ai besoin de GPS pour être actif, j'ai utilisé une boîte d'alertdialog pour activer le GPS en cliquant sur Paramètres, il s'ouvrira au réglage et Si je l'active la boîte de dialogue IT DIALOGBOX Désapper et GPS Commencez à travailler, mais si je appuyais sur le bouton Retour sans activer le GPS Ça fonctionne et que l'activité commence, je souhaite vérifier si GPS est activé si ce n'est pas la 2e activité

aucune erreur de venir Mais juste sur le dos, appuyez sur le réglage sans l'activer, il démarrera une activité sans erreur et toujours GPS est désactivé. P>

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main3);
    textView1 = (TextView) findViewById(R.id.location_view);
    button1 = (Button) findViewById(R.id.camera);
    button2 = (Button) findViewById(R.id.upload);
    editText1 = (EditText) findViewById(R.id.remarks);
    imageView11 = (ImageView) findViewById(R.id.image1);
    button1.setOnClickListener(this);
    button2.setOnClickListener(this);


    locationText = (TextView) findViewById(R.id.location_view);
    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);
    }

    getLocation();
}



public void getLocation() {
    try {
        locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
        locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER, 5000, 5, (LocationListener) this);
    } catch (SecurityException e) {
        e.printStackTrace();
    }
}

@Override
public void onBackPressed() {
    super.onBackPressed();
}

@Override
public boolean onOptionsItemSelected(@NonNull MenuItem item) {
    switch (item.getItemId()){
        case R.id.item1:
            Toast.makeText(getApplicationContext(),"Account Clicked",Toast.LENGTH_SHORT).show();
            return true;
         case R.id.item2:
            Toast.makeText(getApplicationContext(),"Account Clicked",Toast.LENGTH_SHORT).show();
            return true;
         case R.id.item3:

             AlertDialog.Builder alerDialogbuilder = new AlertDialog.Builder(Main3Activity.this);
             alerDialogbuilder.setTitle("Confirm Logout");
             alerDialogbuilder.setIcon(R.drawable.ic_error_black_24dp);
             alerDialogbuilder.setMessage("Are You Sure You Want to Logout ");
             alerDialogbuilder.setMessage("Logingout will need id password again");
             alerDialogbuilder.setCancelable(false);
             alerDialogbuilder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
                 @Override
                 public void onClick(DialogInterface dialogInterface, int i) {
                     Intent intents = new Intent(Main3Activity.this,MainActivity.class);
                     startActivity(intents);
                     Toast.makeText(getApplicationContext(),"Successfull Logout",Toast.LENGTH_SHORT).show();
                                         }
             });
             alerDialogbuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
                 @Override
                 public void onClick(DialogInterface dialogInterface, int i) {
                     Toast.makeText(getApplicationContext(),"Logout Canceled",Toast.LENGTH_SHORT).show();
                 }
             });
             AlertDialog alertDialog = alerDialogbuilder.create();
             alertDialog.show();


            return true;
           default:return super.onOptionsItemSelected(item);
    }
    }

private void camera(){
    Intent intents = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
    startActivityForResult(intents,CAMERA_REQUEST);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (requestCode==CAMERA_REQUEST&&resultCode== Activity.RESULT_OK){
        Bitmap photo= (Bitmap)data.getExtras().get("data");
        imageView11.setImageBitmap(photo);

    }
}

private void upload(){
    AlertDialog.Builder alerDialogbuilder = new AlertDialog.Builder(Main3Activity.this);
    alerDialogbuilder.setTitle("Confirm Upload ?");
    alerDialogbuilder.setIcon(R.drawable.ic_error_black_24dp);
    alerDialogbuilder.setMessage("Are You Sure You Want to Upload Data");
    alerDialogbuilder.setCancelable(false);
    alerDialogbuilder.setPositiveButton("yes", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
          Toast.makeText(getApplicationContext(),"File Uploading...",Toast.LENGTH_SHORT).show();
        }
    });
    alerDialogbuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Toast.makeText(getApplicationContext(),"Recheck Data",Toast.LENGTH_SHORT).show();
        }
    });
    AlertDialog alertDialog = alerDialogbuilder.create();
    alertDialog.show();
}

@Override
public void onClick(View view) {

    if(view==button1){
        camera();
    }

    else if (view == button2){
        upload();
    }

}


@Override
public void onLocationChanged(Location location) {

    double lati = location.getLatitude();
    double longi = location.getLongitude();

    locationText.setText("Latitude: " + lati + "\n Longitude: " + longi);

}

@Override
public void onStatusChanged(String s, int i, Bundle bundle) {

    Toast.makeText(this, "Please Enable GPS and Internet", Toast.LENGTH_SHORT).show();
    }

@Override
public void onProviderEnabled(String s) {

}

@Override
public void onProviderDisabled(String s) {
    AlertDialog.Builder alerDialogbuilder = new AlertDialog.Builder(Main3Activity.this);
    alerDialogbuilder.setTitle("Enable Gps to Continue");
    alerDialogbuilder.setIcon(R.drawable.ic_error_black_24dp);
    alerDialogbuilder.setMessage("If You Want To Enable Gps Go To Settings");
    alerDialogbuilder.setCancelable(false);
    alerDialogbuilder.setPositiveButton("Settings", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            Intent intent1 = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
            startActivity(intent1);
            Toast.makeText(getApplicationContext(),"Enable Gps..",Toast.LENGTH_SHORT).show();
        }
    });
    alerDialogbuilder.setNegativeButton("No", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialogInterface, int i) {
            finish();
            Toast.makeText(getApplicationContext(),"Uploading Failed,Enable Gps",Toast.LENGTH_SHORT).show();
        }
    });
    AlertDialog alertDialog = alerDialogbuilder.create();
    alertDialog.show();
    }
  }


1 commentaires

S'il vous plaît me fournir un ans de travail pour mettre à jour ou changer de code dans quelle classe s'il vous plaît


3 Réponses :


1
votes

implémenter ci-dessous méthode pour vérifier l'état de la vérification -:

public boolean CheckGpsStatus() {

         LocationManager locationManager = (LocationManager) context.getSystemService(Context.LOCATION_SERVICE);

         boolean GpsStatus = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);

            return GpsStatus;
        }


4 commentaires

Où mettre en œuvre ??


Pls vérifier mon code et m'aidez-moi que je serai très reconnaissant


Appelez cette méthode dans Oncreate (Bundle SavedInstancestate) dans une instruction de condition IF, s'il est vrai, obtenez l'emplacement autrement terminé. Vous pouvez demander une autorisation à nouveau ou accéder à la page de paramètres GPS de manière dynamique.


@ Darkwarrior Check Ma réponse Il vous guidera comment le faire.



0
votes
protected LocationRequest locationRequest;



public void checkForLocationRequest() {
        locationRequest = LocationRequest.create();
        locationRequest.setInterval(MIN_UPDATE_INTERVAL);
        locationRequest.setNumUpdates(1);
        locationRequest.setPriority(LocationRequest.PRIORITY_HIGH_ACCURACY);
//        locationRequest.setPriority(LocationRequest.PRIORITY_BALANCED_POWER_ACCURACY);
    }
    public void checkForLocationSettings() {
        try {
            LocationSettingsRequest.Builder builder = new LocationSettingsRequest.Builder().addLocationRequest(locationRequest);
            builder.addLocationRequest(locationRequest);
            SettingsClient settingsClient = LocationServices.getSettingsClient(MainActivity.this);
            settingsClient.checkLocationSettings(builder.build())
                    .addOnSuccessListener((Activity) MainActivity.this, new OnSuccessListener<LocationSettingsResponse>() {
                        @Override
                        public void onSuccess(LocationSettingsResponse locationSettingsResponse) {
//                            delay(1);
                            //Setting is success...
                            //  Toast.makeText(SplashActivity.this, "Enabled the Location successfully. Now you can press the buttons..", Toast.LENGTH_SHORT).show();
                        }
                    })
                    .addOnFailureListener((Activity) MainActivity.this, new OnFailureListener() {
                        @Override
                        public void onFailure(@NonNull Exception e) {
                            int statusCode = ((ApiException) e).getStatusCode();
                            switch (statusCode) {
                                case LocationSettingsStatusCodes.RESOLUTION_REQUIRED:
                                    try {
                                        // Show the dialog by calling startResolutionForResult(), and check the
                                        // result in onActivityResult().

                                        ResolvableApiException rae = (ResolvableApiException) e;
                                        rae.startResolutionForResult((Activity) MainActivity.this, GET_PERMISSION_REQ_CODE);
                                    } catch (Exception ex) {
                                        new MyUtils().catchError(MainActivity.this, ex);
                                    }
                                    break;
                                case LocationSettingsStatusCodes.SETTINGS_CHANGE_UNAVAILABLE:
                                    Toast.makeText(MainActivity.this, "Setting change is not available.Try in another device.", Toast.LENGTH_LONG).show();
                            }
                        }
                    });
        } catch (Exception e) {
            new MyUtils().catchError(MainActivity.this, e);

        }
    }
This Above code shows the popup for enable the gps if gps is not enabled and also gives you callback for success and failure 

2 commentaires

Okie Voici les deux méthodes euh ont défini séparément, je dois utiliser ceci où je veux le vérifier correctement ??


Travaillé pour moi mais monsieur j'ai mis à jour le code avec une commande corrompressée () à Onstatus a changé maintenant son fonctionnement, mais lorsque vous avez toujours appuyer sur le bouton Backbutton, sans que Backbutton, sans permettre à GPS qu'elle ouvre une activité, mais lorsque j'accepte GPS, puis nous appuyons sur le bouton GPS. revenez à nouveau à l'activité précédente



0
votes
        public class MainActivity extends AppCompatActivity
                implements NavigationView.OnNavigationItemSelectedListener ,OnMapReadyCallback,LocationListener{

     protected static final String TAG = "MainActivity";
        protected static final int REQUEST_CHECK_SETTINGS = 0x1;

        Marker mCurrLocationMarker;
        GoogleMap mgooglemap;
        private LocationManager locationManager;


@Override
    public void onLocationChanged(Location location) {

        if (mCurrLocationMarker != null) {
            mCurrLocationMarker.remove();
        }

        //Place current location marker
        LatLng latLng = new LatLng(location.getLatitude(), location.getLongitude());
      //  MarkerOptions markerOptions = new MarkerOptions();
      //  markerOptions.position(latLng);
      //  markerOptions.title("Current Position");
       // markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));
      // mCurrLocationMarker = mgooglemap.addMarker(markerOptions);


        //move map camera
        mgooglemap.animateCamera(CameraUpdateFactory.newLatLngZoom(latLng,16));
mgooglemap.getMaxZoomLevel();
      //  locationManager.removeUpdates(this);
    }

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

    }

    @Override
    public void onProviderEnabled(String provider) {

    }

    @Override
    public void onProviderDisabled(String provider) {
        Toast.makeText(MainActivity.this, "Please Enable GPS", Toast.LENGTH_LONG).show();

//for you want to open Settings screen
while(!onProviderEnabled())
{
    startActivityForResult(new Intent(android.provider.Settings.ACTION_SETTINGS), 0);
}

    }
The onProviderDisabled() of the above code will provide you the required flow.     

12 commentaires

mais cela ne fera que griller un texte pour activer GPS.Mais, je veux montrer le paramètre GPS dans les paramètres, puis vous ne pouvez pas revenir en arrière avec le bouton arrière sans permettre à GPS que je veux ce monsieur


J'ai eu le code monsieur mais que si j'ouvre l'activité et sans permettre mon GPS, cliquez sur le bouton de l'arrière, mon activité commence sans GPS


Je ne veux pas de mettre à jour dans mon programme, il suffit de besoin d'un code pour vérifier si GPS est activé ou non, sinon il se déplace vers l'emplacement suivant


Quel est le prochain emplacement?


Vérifiez la réponse mise à jour. C'est le moyen le plus possible d'obtenir la solution souhaitée


Sir in sur le fournisseur désactivé Il ouvrira la définition si je l'active si je l'active et appuyez sur la touche Retour, il apparaîtra à l'écran principal, mais si nous le permettrons, cela vient toujours à l'activité principale au lieu de rester sur la même activité.


Votre situation est la suivante: 1. Si GPS désactivé -> Ouvrir les paramètres -> Activé -> MainActivity. 2. Si GPS activé -> MainActivity. est-ce tellement ???


Je veux juste que mon application vérifie si GPS est activé ou non si son activé reste alors sur la même activité sinon il devrait revenir à l'activité précédente jusqu'à ce qu'il soit activé.


monsieur, j'ai juste besoin de vérifier si mon GPS I est actuellement actif ou non si actif continue si ce n'est pas le cas ne fonctionnera pas ou à aucune activité jusqu'à GPS est activé et rechérent


En bref si non activé GPS -> Retour à l'activité précédente ?? est ce bien?


1. Si GPS désactivé -> Ouvrir les paramètres -> Activé -> MainActivity. Si toujours sa personne handicapée si la personne revenait à l'activité sans l'activer, elle ne devrait pas fonctionner plus avant 2. Si GPS est activé -> MainActivity. est-ce tellement ???


monsieur, je n'ai besoin que de code de chèque pour vérifier si mon GPS est activé si je ne reste pas sur la même activité que j'utilise la commande de reprise de l'onpost dans laquelle il vérifie le GPS activé ou désactivé si désactivé il ne fonctionnera pas et s'il est activé sur CV STOPS et mon autre travaux commence