almost 4 years ago

Permission

存取 SQLite 或 SharedPreferences 或 File I/O 時設定的存取權限。

  • MODE_PRIVATE:只有建立此 Preferences 檔案的應用程式可以存取。
  • MODE_MULTI_PROCESS:多個應用程式都可以強制存取。
  • MODE_WORLD_READABLE:This constant was deprecated in API level 17.
  • MODE_WORLD_WRITEABLE:This constant was deprecated in API level 17.

1. SQLite

Android - 使用資料庫 SQLite

2. SharedPreferences

適用小量資料,像是 Web 所用的 Cookie

2.1. 建立 Preferences - getSharedPreferences

SharedPreferences
FragmentActivity parent = this.getActivity();
int 權限 = Context.MODE_PRIVATE; //permission
SharedPreferences preferences = parent.getSharedPreferences("檔名", 權限);

2.2. 寫入 Preferences

putXXX
Editor editor = preferences.edit();
String key = "name";
String value = false;
editor.putBoolean(key, value);
editor.commit(); // 最後必須 commit 交付

2.2.1. putXXX 可寫入Preferences 的型態

  • putBoolean(key, value):value 為 boolean 型態。
  • putFloat(key, value):value 為 float 型態。
  • putInt(key, value):value 為 int 型態 。
  • putLong(key, value):value 為 long 型態。
  • putString(key, value):value 為 String 型態 。
  • putStringSet(key, value):value 為 Set 型態。

2.3. 讀取 Preferences

getXXX
String key = "isNewOne";
boolena defaultValue = false; // 若 key 不存在時,所需回傳的預設值
boolean isNewOne = preferences.getBoolean(key, defaultValue);

2.3.1. getXXX

  • getAll():
    • return Map value,所有 pair,
    • 可以再用 keySet():Set 取得所有 key 的集合。
  • getBoolean(key, defValue):return boolean value.
  • getFloat(key, defValue):return float value.
  • getInt(key, defValue):return int value.
  • getLong(key, defValue):return long value.
  • getString(key, defValue):return String value.
  • getStringSet(key, defValue):return Set value.

2.4. 清除 Preferences

2.4.1. 清除單一筆資料 remove(key)

remove(key)
Editor editor = preferences.edit();
String key = "name";
editor.remove(key);
editor.commit(); // 最後必須 commit 交付

2.4.2. 清除所有資料 clear()

clear()
Editor editor = preferences.edit();
editor.clear();
editor.commit(); // 最後必須 commit 交付

3. File I/O

資料大量或是二進位資料

3.1. 建立/寫出 FileOutputStream - openFileOutput

openFileOutput
FragmentActivity parent = this.getActivity();
String 權限 = Context.MODE_PRIVATE; //permission
try {
    FileOutputStream fos = parent.openFileOutput("檔名", 權限);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

3.2 讀入 - openFileInput

openFileInput
FragmentActivity parent = this.getActivity();
try {
    FileInputStream fis = parent.openFileInput("檔名");
} catch (FileNotFoundException e) {
    e.printStackTrace();
}

4. AssetManager

讀取專案下目錄 /assets 內的檔案

4.1. 開檔/讀檔 open("檔名");

AssetManager
FragmentActivity parent = this.getActivity();
AssetManager assets = parent.getAssets();
try {
    InputStream is = assets.open("檔名");
} catch (IOException e) {
    e.printStackTrace();
}

4.1.1. openXXX

  • open(檔名)
  • openXmlResourceParser(檔名):return XmlResourceParser,XmlResourceParser 是一種 DOM 物件

5. SD card File I/O

1 - 4 皆為將資料存放置作業系統配置給應用程式的區塊,
若需要存取 SD 卡 中特定路徑或檔案,可透過 File 物件指定路徑以 sdcard 開始向下指定。

sdcard
File sdcard = new File("/sdcard/");
← Android - Bluetooth 藍牙 Arduino - 第一支程式 →
 
comments powered by Disqus