È possibile attivare programmaticamente LocationProviders (provider GPS/provider di rete) sul dispositivo, se è disattivato?Attivare i provider di posizioni in modo programmatico su Android
risposta
No, non lo è, ma è possibile aprire la finestra delle impostazioni dei servizi di localizzazione:
context.startActivity(new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS));
Utilizzare il seguente codice per avviare GPS
locationManager = (LocationManager) getSystemService (Context.LOCATION_SERVICE);
locationListener = new LocationListener();
locationManager.requestLocationUpdates (LocationManager.GPS_PROVIDER, 0, 0, locationListener);
e il seguente codice per fermare GPS
locationManager.removeUpdates(locationListener);
Per ulteriori dettagli, vedere documentations for LocationManager e for LocationListener.
private void turnGPSOn(){
String provider = Settings.Secure.getString(getContentResolver(), Settings.Secure.LOCATION_PROVIDERS_ALLOWED);
if(!provider.contains("gps")){ //if gps is disabled
final Intent poke = new Intent();
poke.setClassName("com.android.settings", "com.android.settings.widget.SettingsAppWidgetProvider");
poke.addCategory(Intent.CATEGORY_ALTERNATIVE);
poke.setData(Uri.parse("3"));
sendBroadcast(poke);
}
}
Ma questo supporto codice solo fino APK 8.
Sì, ma bisogna essere un Super User (sudo), il dispositivo deve essere radicato.
Abilitazione Località con la modalità Alta precisione o di risparmio della batteria, senza utente che ha bisogno di visitare Impostazioni
http://android-developers.blogspot.in/2015/03/google-play-services-70-places-everyone.html
A partire da Google Play Services 7.0, questa dovrebbe essere la risposta accettata. È possibile avere le impostazioni di aggiornamento dell'app senza mai uscire dall'app. Vedi il link sopra. –
Il link non dice molto sull'implementazione, mi sono perso qualcosa? –
L'esempio di implementazione è qui: http://stackoverflow.com/questions/33251373/turn-on-location-services-without-navigating-to-settings-page – MorZa
Con recente aggiornamento Marshmallow, anche quando l'impostazione posizione è attiva, la vostra applicazione sarà necessario essere esplicitamente richiesto autorizzazione. Il modo consigliato per farlo è mostrare la sezione Autorizzazioni della tua app in cui l'utente può attivare l'autorizzazione come richiesto. Il frammento di codice per fare questo è come di seguito:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
if (this.checkSelfPermission(Manifest.permission.ACCESS_COARSE_LOCATION) != PackageManager.PERMISSION_GRANTED) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Location Permission");
builder.setMessage("The app needs location permissions. Please grant this permission to continue using the features of the app.");
builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
requestPermissions(new String[]{Manifest.permission.ACCESS_COARSE_LOCATION}, PERMISSION_REQUEST_COARSE_LOCATION);
}
});
builder.setNegativeButton(android.R.string.no, null);
builder.show();
}
} else {
LocationManager locationManager = (LocationManager) getSystemService(Context.LOCATION_SERVICE);
boolean isGpsProviderEnabled, isNetworkProviderEnabled;
isGpsProviderEnabled = locationManager.isProviderEnabled(LocationManager.GPS_PROVIDER);
isNetworkProviderEnabled = locationManager.isProviderEnabled(LocationManager.NETWORK_PROVIDER);
if(!isGpsProviderEnabled && !isNetworkProviderEnabled) {
final AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Location Permission");
builder.setMessage("The app needs location permissions. Please grant this permission to continue using the features of the app.");
builder.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
Intent intent = new Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS);
startActivity(intent);
}
});
builder.setNegativeButton(android.R.string.no, null);
builder.show();
}
}
E l'override del metodo onRequestPermissionsResult
come di seguito:
@Override
public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) {
switch (requestCode) {
case PERMISSION_REQUEST_COARSE_LOCATION: {
if (grantResults[0] == PackageManager.PERMISSION_GRANTED) {
Log.d(TAG, "coarse location permission granted");
} else {
Intent intent = new Intent();
intent.setAction(Settings.ACTION_APPLICATION_DETAILS_SETTINGS);
Uri uri = Uri.fromParts("package", getPackageName(), null);
intent.setData(uri);
startActivity(intent);
}
}
}
}
Un altro approccio è che si può anche utilizzare il SettingsApi di indagare quale fornitore di posizione (s) sono abilitato. Se nessuno è abilitato, puoi chiedere a una finestra di dialogo di cambiare le impostazioni dall'interno dell'app.
- 1. Android come attivare non disturbare (dnd) in modo programmatico
- 2. Come leggere i messaggi vocali in modo programmatico su Android
- 3. Come attivare/fare clic in modo programmatico su un MenuItem in Android?
- 4. Modificare l'altezza di AppBarLayout in modo programmatico su Android
- 5. Android: attivare in modo programmatico la modalità di selezione del testo in una WebView su Jelly Bean
- 6. Disabilitare lo schermo sleep in modo programmatico su Android?
- 7. Come rimuovere la scheda SD in modo programmatico su Android
- 8. Come posso configurare l'attività Launcher in modo programmatico su Android?
- 9. Come avviare la schermata principale in modo programmatico su Android
- 10. Posso impostare android: layout_toLeftOf in modo programmatico?
- 11. Sicurezza di primavera: accedere in modo programmatico
- 12. Come testare i provider di contenuti su Android
- 13. La visualizzazione di Android si dissolve in modo programmatico
- 14. Android: finestra di dialogo "Applicazioni recenti" aperta in modo programmatico
- 15. Avvio in modo programmatico dell'attività "Aggiungi account" in Android 2.2
- 16. Inserire HTML in modo programmatico nell'editor wysiHTML5
- 17. evidenzia in modo programmatico UIBarButtonItem
- 18. esegue in modo programmatico l'evento Touch in Android
- 19. Come aggiungere o rimuovere il filtro di intent in modo programmatico su Android?
- 20. I file della scheda SD aggiornati in modo programmatico non vengono aggiornati in Windows Explorer
- 21. Cambia EditText IME_ACTION in modo programmatico
- 22. Android, caricamento di una foto da host su imgur in modo programmatico
- 23. Come creare i blocchi logici in modo programmatico in Blender?
- 24. Ottieni la categoria di qualsiasi app in modo programmatico su Android?
- 25. come ridurre la dimensione del video prima di caricare sul server in modo programmatico su Android
- 26. Come modificare la larghezza del tratto di una forma in modo programmatico su Android?
- 27. implementare android: button = "@ drawable/checkbox" in modo programmatico
- 28. Attivare SPP Bluetooth in Android?
- 29. Come impostare "android: scrollbars = vertical" in modo programmatico?
sto parlando di accendere (Impostazioni -> Posizione e sicurezza -> Usa reti wireless/Usa satelliti GPS) le opzioni del dispositivo Android a livello di programmazione. –