Usa questo codice
boolean hasGps = pm.hasSystemFeature(PackageManager.FEATURE_LOCATION_GPS);
se avete l'hardware GPS incorporato per la periferica, ma non è abilitata quindi utilizzare il seguente cod per abilitare in modo dinamico,
LocationManager manager = (LocationManager)getSystemService(Context.LOCATION_SERVICE);
if(!manager.isProviderEnabled(LocationManager.GPS_PROVIDER)) {
//Ask the user to enable GPS
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Location Manager");
builder.setMessage("Would you like to enable GPS?");
builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//Launch settings, allowing user to make a change
Intent i = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(i);
}
});
builder.setNegativeButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
//No location service, no Activity
finish();
}
});
builder.create().show();
}
È possibile chiamare LocationManager.getAllProviders()
e controllare se LocationManager.GPS_PROVIDER
è incluso nell'elenco.
altro semplicemente si utilizza questo codice metodo LocationManager.isProviderEnabled(String provider)
.
se restituire false anche nel caso se non dovete GPS nel dispositivo
Ho un dispositivo senza GPS, ma pm.hasSystemFeature (PackageManager.FEATURE_LOCATION_GPS); restituisce sempre True – skayred
visualizza la modifica e prova – Karthi
LocationManager.isProviderEnabled (provider di stringhe) restituisce false per il mio tablet, è vero. Ma se ho il GPS disabilitato sul mio palmare con supporto GPS, sarà anche falso. Devo controllare la disponibilità dell'hardware, non abilitata-disabilitata stato – skayred