Androidのファイルアクセス

by K.I
2014/10/15〜

Index


概要


[top]

TEXTファイル

TEXTのRead

assetsフォルダ

res/rawフォルダ

StringBuilderとStringBuffer

参考: StringBuffer_vs_StringBuilder

InputStreamとReader

TextのWrite

OutputStreamとWriter

printfを使う

localフォルダ


1実際には、StringBufferが先にあって、StringBuilderが後から追加されたらしいが。
2文字コード変換が不要ならば、使う必要はないのかな。

[top]

SDcardの利用

SDcardのパス取得

SDcardの変更を反映させる

参考: 追加した画像をギャラリーに表示させるには
[top]

バイナリファイル

バイナリの入出力

BufferedStreamを使う


[top]

ファイルダイアログ

ファイル情報クラス

Layoutクラスのカスタマイズ

Adapterクラスのカスタマイズ

ファイル選択ダイアログクラス

ファイル選択ダイアログの使用例


3というか、ファイルを弄らせたくないらしいのかも。

[top]

Openダイアログ

選択フラグを追加

Openダイアログの画面構成XML

OpenリストのAdapter

OpenリストのLayout

リスト1行分のレイアウトXML

Openダイアログクラス

Openダイアログの使用例

画面回転時の対応


4ので、ちょっと冗長になっている。
5というか、いろいろやったけど、どうもよく分からないので。。

[top]

Saveダイアログ

EditTextの内容を返すように


6Openダイアログも、そうした方がいいかも。

[top]

Preference

SharedPreferencesオブジェクト取得

アクセスモード 説明
MODE_PRIVATE 他のアプリからアクセス不可
MODE_WORLD_READABLE 他のアプリから読込み可
MODE_WORLD_WRITEABLE 他のアプリから書込み可

Preference書込み・読出し

キーの型 書込みメソッド 読出しメソッド
boolean putBoolean getBoolean
float putfloat getfloat
long putLong getLong
int putInt getInt
String putString getString

Preferenceの削除

Preferenceファイルの確認

Preferenceの使用例


[top]

Preferenceの設定画面

PreferenceのレイアウトXML

Preference変更時の処理

Summaryに現在値を動的に表示

Preferenceが更新されない

CategoryでSummuryが表示されない

    // Preferenceの各項目のSummaryに現在値を表示する
    public void resetSummary() {
        SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
        PreferenceScreen screen = this.getPreferenceScreen();
        screenSummary(sharedPrefs,screen);
    }
    
    // screenのpreferenceを順に処理
    public void screenSummary(SharedPreferences sharedPrefs, PreferenceScreen screen) {
        for (int i = 0; i < screen.getPreferenceCount(); i++) {
            Preference pref = screen.getPreference(i);
            if (pref instanceof PreferenceGroup) {
                groupSummary(sharedPrefs,(PreferenceGroup)pref);
            }
            else if (pref instanceof PreferenceScreen) {
                screenSummary(sharedPrefs,(PreferenceScreen)pref);
            }
            else {
                prefSummary(sharedPrefs, pref); 
            }
        }
    }
    
    // groupのpreferenceを順に処理
    public void groupSummary(SharedPreferences sharedPrefs, PreferenceGroup group) {
        for (int i = 0; i < group.getPreferenceCount(); i++) {
            Preference pref = group.getPreference(i);
            if (pref instanceof PreferenceGroup) {
                groupSummary(sharedPrefs,(PreferenceScreen)pref);
            }
            else if (pref instanceof PreferenceScreen) {
                screenSummary(sharedPrefs,(PreferenceScreen)pref);
            }
            else {
                prefSummary(sharedPrefs, pref); 
            }
        }
    }
    
    // preferenceの動的表示
    public void prefSummary(SharedPreferences sharedPrefs, Preference pref) {
        if (pref instanceof CheckBoxPreference || pref instanceof SwitchPreference ) {
            String key = pref.getKey();
                boolean val = sharedPrefs.getBoolean(key, false);
            pref.setSummary(val?"ON":"OFF");
        }
        if (pref instanceof EditTextPreference || pref instanceof ListPreference ) {
            String key = pref.getKey();
                String val = sharedPrefs.getString(key, "");
            pref.setSummary(val);
        }
        if (pref instanceof MultiSelectListPreference) {
            String val = multiSelectListSummary((MultiSelectListPreference) pref);
            pref.setSummary(val);
        }
    }

数値の設定

文字サイズを変更

Preferenceのカスタマイズ


7当然、やってくれるものと思っていたので、何が間違ってるか悩んじゃったよ。。

[top]

メモ

adbによるファイルの確認

Bitmapの保存

SDカードを使う場合のおまじない

メディアスキャン

参考: MediaScannerに登録を依頼する方法

新規フォルダ作成

ファイル関連いろいろ

プログレス表示

フォルダパス取得

フォルダ一覧

参考


8予め、そのAndroid用デバイスドライバをインストールしておく必要がある。
9このためには、Androidをデベロッパーモードにして、さらにUSBデバッグを許可しておく必要があると思う。
10Androidの内部的には更新されているんだけど、USBストレージとして参照されるインデックスがすぐには更新されないのかな?
11やっぱり全体スキャンしてくれた方が楽で良いんだけどなぁ。。
12File形式で読めないのは、ちょっと面倒だ。


comments powered by Disqus