質問

デバイスブーツの後にウィジェットにデータを読み取ろうとしています。

私のブートレシーバーはこれです:

    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;
}

}

私は私が得ることを知っています BOOT_COMPLETED 意図(ウィジェット自体で使用した後)が、保存したデータを読むことができません。

私はそれを使って読みました SharedPreferences 解決策ですが、私が知っているのはあなたがあなたのデバイスを起動するとき、 SharedPreferences もうそこにはありません。

Android SDKに組み込みのSQLを使用して、データを内部的に保存します。

助けてください... :(

役に立ちましたか?

解決

外部ストレージは、 BOOT_COMPLETED ブロードキャスト。そして、あなたのループは無意味です。

しかし、私が知っていることは、デバイスを起動するとき、共有の登録はもはやそこにありません。

はい、 SharedPreferences ブートタイムにあります。

Android SDKに組み込みのSQLを使用して、データを内部的に保存します。

データは外部ストレージにないため、なぜ外部ストレージを待っているのかは不明です。

ただし、I/Oのあらゆる形態が長すぎる場合があります。あなたの〜を持つ BroadcastReceiver 電話 startService()IntentService それはあなたのデータベースを読むことができます SharedPreferencesonHandleIntent() アプリウィジェットを更新します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top