Archivi categoria: Android

Come risolvere l’errore RH-01 di Google Play Store sui dispositivi Android

In questa guida vi voglio parlare di come risolvere l’errore RH-01 dell’app Google Play Store sui dispositivi Android, un errore che compare quando si prova ad accedere al market di Google e appare una finestra con scritto “Errore durante il recupero delle informazioni dal server [RH-01]” e che invita a riprovare ad accedere al market (senza risultati) premendo sul pulsante Riprova. Questo errore non permette di accedere al Google Play Store e quindi di scaricare o aggiornare le app.

error-o1

Continua la lettura di Come risolvere l’errore RH-01 di Google Play Store sui dispositivi Android

ANDROID – Usiamo le API di Android per creare un timer

L’oggetto che andremo ad utilizzare è il CountDownTimer, contenuto in Android.os, che ci permette di specificare, nel costruttore, quanti millisecondi vogliamo che duri il conto alla rovescia e ogni quanti deve invece ticchettare. Questa classe non è però in-stanziabile, quindi dovremo eseguire l’overriding dei due eventi principali, onFinish onTick e accodare alla dichiarazione il metodo per avviare il conto alla rovescia.

CountDownTimer cdt = new CountDownTimer(countdownTime,1000){
@Override
public void onFinish() {
//Cosa fare quando finisce
}

@Override
public void onTick(long millisUntilFinished) {
//cosa fare ad ogni passaggio
}
}.start();

Se invece vogliamo fermare il countdown, quello che dobbiamo fare è richiamare il metodo cancel sull’oggetto CountDownTimer che abbiamo appena utilizzato.

cdt.cancel();

Il tutto viene gestito dalle API di Android e non avremo bisogno di dichiarare permessi o utilizzare dei thread, tutto può essere eseguito comodamente dal processo principale dell’Activity

ANDROID – SHARED PREFERENCES: Un modo semplice per salvare le opzioni

Come funziona SharedPreferences

La classe SharedPreferences fornisce un framework che ci permette di memorizzare una map di coppie chiave-valore. In particolare la chiave della coppia è sempre una String mentre il valore può essere un tipo primitivo boolean, int, float, long o un oggetto di tipo String. I valori sono memorizzati fisicamente in un file xml e sono disponibili anche dopo un riavvio dell’applicazione o del telefono.

All’interno di una Activity un oggetto SharedPreferences può essere creato richiamando semplicemente il metodo getPreferences, il parametro passato indica se il corrispondente file xml deve essere privato o leggibile anche dalle altre applicazioni installate sul device.

SharedPreferences prefs = getPreferences(MODE_PRIVATE); 

Usando il metodo getPreferences di Activity i valori memorizzati sono privati e disponibili solo dall’Activity. Se vogliamo creare un oggetto SharedPreferences utilizzabile in più Activity all’interno dell’applicazione possiamo usare il metodo statico getDefaultSharedPreferences della classe PreferenceManager:

SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this); 

Lettura di un valore
Per ricavare il valore associato a una chiave deve essere usato un metodo diverso in base al tipo del valore, esistono i metodi getBoolean, getInt, getFloat, getLong e getString che hanno come parametri una stringa contenente la chiave e il valore di default da ritornare nel caso in cui la chiave non sia presente. Esiste anche un metodo getAll che ritorna una Map con tutte le coppie presenti.

Per esempio per leggere un boolean associato a una chiave potremmo usare il metodo getBoolean in questo modo:

SharedPreferences prefs = getPreferences(MODE_PRIVATE);
boolean primoAvvio = prefs.getBoolean(PRIMO_AVVIO, true);

Memorizzazione di un valore
Per memorizzare un valore è invece necessario richiamare il metodo edit di SharedPreferences. Questo metodo ritorna un oggetto Editor che permette di salvare valori usando i metodi putBoolean, putInt,putFloat, putLong e putString. Dopo aver richiamato uno o più di questi metodi dovrà essere richiamato anche il metodo commit, in caso contrario i valori non verranno effettivamente salvati.

Vediamo un semplice esempio che usa un oggetto SharedPreferences per memorizzare un boolean che indica se l’applicazione è già stata avviata altre volte. Nel caso in cui sia il primo avvio viene mostrato a video un messaggio usando la classe Toast:

private void mostraToastPrimoAvvio()
{
SharedPreferences prefs = getPreferences(MODE_PRIVATE);
if (prefs.getBoolean(PRIMO_AVVIO, true))
{
Toast.makeText(this, R.string.primo_avvio,
Toast.LENGTH_LONG).show();
Editor prefsEditor = prefs.edit();
prefsEditor.putBoolean(PRIMO_AVVIO, false);
prefsEditor.commit();
}
}

Conclusioni
Come vedete niente di complesso. Il risultato finale è questo, ovviamente lanciando una seconda volta l’applicazione il messaggio “Primo avvio” non verrà visualizzato!