Android:ユーザデータの保存

android-user-data.png

プレファレンスを使ってユーザデータの読み書き

public void SaveUserData(){
        SharedPreferences mSharedPref;
        mSharedPref =  mActivity.getSharedPreferences(mActivity.mUserDataName,Activity.MODE_PRIVATE);
        Editor editor = mSharedPref.edit();
        editor.putString(mKey, mContent);
        editor.putString(mKey+"detail", mDetail);
        editor.putInt(mKey+"color",mColor);        
        editor.commit();
 
    }

読み書きするなら、preferenceかな。
Androidプログラミング入門ー設定値を簡単に保存するプリファレンスの使い方
/data/data/パッケージ名/xxx
にxmlファイルが入っているらしい。(どうもDDMSからは見えない。)

SharedPreferences getSharedPreferences(String name, int mode)

引数
name:ファイル名
mode:以下のいずれかの定数を指定します。

  • MODE_PRIVATE 他のアプリからはアクセス不可
  • MODE_WORLD_READABLE 他のアプリからの読み込み可能
  • MODE_WORLD_WRITEABLE 他のアプリからの書き込み可能
EditText mEditText;
Button mButton;
mButton=(Button)findViewById(R.id.button1);
mEditText=(EditText)findViewById(R.id.edittext1);
mButton.setOnClickListener(new View.OnClickListener(){
            public void onClick(View v) {
                    setContentView(R.layout.main);
                     Editor editor = mSharedPref.edit();
                      editor.putString(
                        "data1", mRoutineTitle.getText().toString());
                      editor.commit();
                    } 
                });

プレファレンスを使う方法をオススメする。

ファイルを読み込む方法

テキストファイルのエンコーディングはUTF-8で保存すること。
   Resources res = this.getResources();
        InputStream st = null;
        try {
            st = res.openRawResource(R.raw.myroutine);
            byte[] buffer = new byte[st.available()];
            while((st.read(buffer)) != -1) {}
            String s = new String(buffer);
            new AlertDialog.Builder(this).setMessage(s).show();
        } catch (IOException e) {
        } finally{
            try{
                st.close();
            }catch(IOException e2){
            }
        }
    }

Preferenceデータが保存される場所

/data/data/アプリパッケージ名/shared_prefs/アプリパッケージ名.xml

data/フォルダ以下を閲覧するには?

adb -d shell
run-as アプリパッケージ名

内部保存領域を使う

デバイスの内部保存域に直接ファイルを保存することができます。内部保存域はデフォルトでアプリケーションにプライベートで、他のアプリケーションはそれにアクセスすることはできません ( そのユーザも同様にできません ) 。ユーザがアプリケーションをアンインストールするとそれらのファイルは削除されます。
量が少ないならこれがいいかな?
コンパイル時にアプリケーションで静的なファイルを保存したい場合は、プロジェクトの res/raw/ ディレクトリにファイルを保存します。openRawResource() に R.raw.<filename> のリソース ID を渡してファイルをオープンすることが可能です。このメソッドはファイルを読み込むために使用可能な InputStream を返却します ( オリジナルのファイルに書き込みすることはできません ) 。

DDMSから端末にデータを入れる

mnt/shell/emulated/0

外部保存領域を使う

SDカードってこと。

Parcelable

クラスをメンバごと保存できるらしい


android-file android-file-explorer preference user-data

サポートサイト Wikidot.com android-fileandroid-file-explorerpreferenceuser-data