Frage

Ich versuche, Daten nach dem Gerätestart an meinem Widget zu lesen.

Mein Bootsempfänger ist folgende:

    public class onBootReceiver extends BroadcastReceiver{

public static final String TAG = "BootReceiver";
private Context c;
@Override
public void onReceive(Context c, Intent i) {
    // TODO Auto-generated method stub

    boolean dontStop = true;
    while(dontStop)
    {
        try
        {   
            this.c=c;
            if(isExternalStorageMounted())
            {
                dontStop = false;
            }
            else
                for(int j=0;j<10000;j++)
                    Log.d(TAG, "###################### EXTERNAL STORAGE NOT MOUNTED ##########################");
        }
        catch (Exception e)
        {
            for(int j=0;j<10000;j++)
                Log.d(TAG, "###################### EXTERNAL STORAGE NOT MOUNTED ##########################");
        }
    }
    Intent externalStorageReady = new Intent(c, TheWidget.class);
    externalStorageReady.setAction(GlobalVars.WIDGET_INTENT_ACTION_READ_PREFS_AFTER_BOOT);
    c.sendBroadcast(externalStorageReady);

}
private boolean isExternalStorageMounted()
{
    String state = Environment.getExternalStorageState(); 
    if (Environment.MEDIA_REMOVED.equals(state))
    {
        return false; 
    }
    else if (Environment.MEDIA_SHARED.equals(state))
    {
        return false; 
    }
    else if (Environment.MEDIA_UNMOUNTABLE.equals(state))
    {
        return false; 
    }
    else if (Environment.MEDIA_UNMOUNTED.equals(state))
    {
        return false; 
    }
    return true;
}

}

Ich weiß, ich bekomme das BOOT_COMPLETED Absicht (nachdem ich es im Widget selbst verwendet habe), aber ich kann meine gespeicherten Daten einfach nicht lesen.

Ich habe das verwendet SharedPreferences ist die Lösung, aber ich weiß, wenn Sie Ihr Gerät starten, die SharedPreferences ist nicht mehr da.

Ich speichere die Daten intern mit integriertem SQL im Android SDK.

Bitte helfen Sie ... :(

War es hilfreich?

Lösung

Der externe Speicher ist möglicherweise nicht zum Zeitpunkt von a fertig BOOT_COMPLETED Übertragung. Und Ihre Schleifen sind sinnlos.

Aber was ich weiß, ist, wenn Sie Ihr Gerät starten, sind die SharedPreferences nicht mehr da.

Ja, SharedPreferences gibt es in der Startzeit?

Ich speichere die Daten intern mit integriertem SQL im Android SDK.

Dann ist unklar, warum Sie auf einen externen Speicher warten, da Ihre Daten nicht auf dem externen Speicher stehen.

Jede Form von E/A kann jedoch zur Startzeit zu lange dauern. Habe deine BroadcastReceiver Anruf startService() auf an IntentService Das kann Ihre Datenbank lesen oder SharedPreferences in onHandleIntent() und aktualisieren Sie Ihr App -Widget.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top