Ch17 SharedPreference與檔案應用

Slides:



Advertisements
Similar presentations
猜谜语 有个小娃娃,真是没 礼貌。 见到小树摇一摇,吓 得树叶哇哇叫。 见到小花逗一逗,摘 去她的太阳帽。 没人和它交朋友,只 好自已到外处跑。
Advertisements

1 97 年度新住民子女教育研討會 九十七年十月二十九日 柯伯儒 [1] 詹雅琄 [2] [1] [2] [1] [1] 國立台北教育大學課程與教學研究所博士生、 彰化縣二林鎮廣興國小主任 [2] [2] 國立台中教育大學課程與教學研究所研究生、 彰化縣二林鎮廣興國小教師 有效提升國小新住民子女 語文學習的策略.
語文教學分享心得 組員: B 蘇品綺 B 張慈真 B 陳怡君 B 蕭美玲 B 王雅萍 B 蔡佳珍.
環保 環保問題社會病態行為 從選購產品方面 家庭廢棄物的處理 住家的節約能源方面. 環保問題社會病態行為 社會功利主義過盛,疏忽善盡設備的責任; 缺乏惜福愛物的觀念,以自我為重心,任 意破壞使用資源; 「家」的觀念過度狹隘,只顧裝修生活的 表面,缺乏公同經營人類共有的家 — 地球 的概念; 無正確的理財觀念,而以金錢的謀取為目.
縮短公共工程工期之 招標決標策略及作法 行政院公共工程委員會 1. 簡報大綱 壹、前言 貳、招標決標策略及作法 参、適用案件類型 肆 、 結語 2.
黄帝内经 内经教研室 王黎.
数据存储.
宿建德江 內容探究 問題討論 語文小詞典 絕句淺說 借代修辭 (補充說明借代法) 延伸閱讀 應用練習 (二)
母親的教誨 胡適 投影片設計:邱芳芸、謝瑞珍.
职官与科举 职官:在国家机构中担任一定职务的官吏,这里面有职官的名称、职权范围和品级地位等方面的内容。
課程地圖 (104年入學-日間部) 校通識核心 專業課程 必修與選修 與管理模組 網路技術 App設計與應用模組 學院通識核心 學院專業核心
工 业 产 品 设 计 广义的工业设计:产品设计、环境设计、视觉传达设计。 狭义的工业设计:产品设计。
第五章银行负债业务 孙小平 经济教研室.
花开有日 芬芳天下 “国培计划(2012)” ——幼儿园骨干教师远程培训项目 山东幼儿园教师8班第4期简报 主办人:张瑞美     
《卖火柴的小女孩》 《海的女儿》 你 认 识 这 些 图 片 的 故 事 吗 《丑小鸭》 《拇指姑娘》 它们都来自于哪位作家笔下?
C语言程序设计 李伟光.
教學經驗分享 吳毅成 國立交通大學資訊工程系 2012年4月.
民主國家的政府體制 我國的中央政府體制 我國中央政府的功能 地方政府組織與功能
建设工程保险制度案例分析 班级:建工134 学号: 姓名:韩秀昆.
岳麓版历史必修一 近代西方资本主义政体的建立 近代西方资本主义政体的建立 山东师大附中 侯新磊.
如何生动形象地 写人记事.
銷售與顧客關係管理 巫立宇.邱志聖 著.
小组工作实训课(1) 第 教案 04.
99年成語200題庫(21-40).
20、豆花庄的小家伙们.
CH11 心理疾病 李志鴻.
第12课时 对自己的行为负责 在承担责任中成长 考 点 聚 焦 考 题 探 究 考 点 拓 展 1.
SharedPreferences与文件存储
不为追"星"所累 (三) 第四课 青春故事 授课人:商城县汪桥一中王启学.
华 夏 之 祖 第 3 课.
法學緒論第六單元:法律適用 設計課程︰ 財經法律系 --楊東連 法學緒論-6.
台灣廢物物處理機構 邱騰煥 8 號.
小儿营养不良 第四篇第二章第二节小儿营养不良.
2016年莱芜市乡村医生在岗培训 启动会.
CH1 . 集 合 与 命 题.
单元 SD 5 菜鸟学飞 附件二 想学飞的职场菜鸟.
权力的行使:需要监督 北京市京源学校 冯 悦.
Ch19 創業精神 管理學:整合觀點與創新思維3/e.中山大學企管系 著.前程文化 出版.
荷福威士顿机器人科技有限公司 上海荷福集团
以考试说明带动二轮复习 福州第三中学 张璐.
歡迎蒞臨 一年二班家長日.
前不久看到了这样一则报道:某个大学校园里,一个大学生出寝室要给室友留一张字条,告诉他钥匙放在哪里。可是“钥匙”两个字他不会写,就问了其他寝室的同学,问了好几个,谁也不会写,没办法,只好用“KEY”来代替了。 请大家就此事发表一下自己看法。
<<文獻學學習報告>>
创意源自激情,技术成就梦想 畅翼创新俱乐部 2012年春俱乐部第三次技术培训 赵程.
跨越海峡的生命桥.
2007 學校國民教育 交流研討會 學校經驗分享.
利用共同供應契約 辦理大量訂購流程說明.
第7章 Android文件与本地数据库(SQLite)
典藏豐富、深具特色的小型博物館 鹽分地帶文化館興建募款啟事 施工中 歡迎蒞臨參觀 建館緣由
主題課程的設計與實例 黃繼仁 課程發展與設計.
Android智慧型手機程式設計實務應用班
Ch5 Android應用程式的主要組成.
ContentProvider與資料共享
西南科技大学网络教育系列课程 高级语程序设计(Java) 第九章 输入/输出流.
第10章 儲存偏好設定、檔案與資料庫 10-1 存取偏好設定 10-2 檔案存取 10-3 關聯式資料庫與SQLite
王豐緒 銘傳大學資訊工程學系 問題:JAVA 物件檔輸出入.
注音符號 首冊教學 說明.
網路應用.
閩南語初階研習報告 《我的冊包》 改編自康軒版第一冊第二課 程詩嵐 林幸玫 李佩瑾 吳瑛瑛 李逸琦 朱嬿蓉.
幼稚園課程標準中的節奏樂器教學 4990U014李宜芸 4990U047陳靜芳 4990U049黃鈴珊 4990U050葉佩汾
兒童及少年保護、 家庭暴力及性侵害事件、 高風險家庭 宣導與通報
聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝. 聚合型第一種:隱沒帶、島弧 例子:臺灣東方的琉球海溝、南美洲智利海溝.
分組專題報告 陳錦蓮、陳麗妃製作.
第16章 天气预报 --Web Service调用
沪粤版八年级物理 3.5 奇妙的透镜.
客語歌謠-四季歌 台中市葫蘆墩國小教師 吳國銘 張郁棻.
注音符號教學 實務分享 公正國小 簡美月.
方格紙上畫正方形.
用Intent啟動程式中的其他Activity、運用WebView顯示網頁 靜宜大學資管系 楊子青
太陽能車、船競賽分享 主講:電子資訊學程 吳冠蓓 老師.
Presentation transcript:

Ch17 SharedPreference與檔案應用

SharedPreference是Android系統提供最簡單的資料存取方式,它適用於儲存一些簡單的資料。與SharedPreference比較,檔案應用因為能使用外部的擴充記憶體(如SD卡),所以可以儲存的資料量比較大,但因為外部擴充記憶體屬於可攜式記憶設備,可以很方便的移至其他裝置(如PC)上使用,儲存的資料可能會被其他裝置讀取,因此安全性較差。

一、Shared Preference資料存取說明 「Shared Preference」在Android系統屬於輕量級資料保存方法,一般用於保存應用程式中與使用者相關的一些偏好設定,這些資料可以由此應用程式的所有使用者共享,因此稱為Shared Preference。 儲存的位置在記憶體的「/data/data/<專案套件>/shared-prefs/<filename>.xml」。

Shared Preference是透過SharegPreferences類別管理儲存的資料,此類別下層有2個介面: SharedPreferences.Editor是用以修改SharedPreferences物件中的值。 SharedPreferences.OnSharedPreferenceChangeListener偵聽器,是偵聽當SharedPreferences內容改變時所觸發的「onSharedPreferenceChanged」事件。

使用SharedPreferences儲存資料的步驟如下: 用「getSharedePreferences(String prefName, int operateMode)」方法,取得SharedPreferences類別的實體物件(這物件其實就是指定名稱偏好檔的代理者)。 第1個字串參數是要建立的偏好檔名稱。 第2個整數參數是此偏好的操作模式,可以使用的模式有: MODE_PRIVATE:0,建立的檔案只能用於此應用程式。 MODE_WORLD_READABLE:1,建立的檔案允許其他應用程式讀取。

MODE_WORLD_WRITEABLE:2,建立的檔案允許其他應用程式修改。 透過SharedPreferences物件的「edit()」方法建立此偏好檔的編輯器(Editor)物件,此物件是SharedPreferences.Editor介面的實作。 利用Editor物件提供的方法,將資料以「鍵/值」對的形式加到Editor物件內,Editor物件依資料型式不同,提供有不同的寫入方法,通用的格式為 put<資料型式>(String key, <dataType> value); 上一步的put方法只是將資料寫到Editor物件,要將資料真的寫到偏好檔,還需要執行Editor物件的「apply()」或「commit()」方法。

使用SharedPreferences讀取資料的步驟如下: 用「getSharedePreferences(String prefName, int operateMode)」方法,取得SharedPreferences類別的實體物件。 依資料型式使用SharedPreferences物件適當的讀取方法,讀取指定鍵值的資料;讀取資料通用的格式為 get<資料型式>(String key, <dataType> defaultValue);

清空指定名稱偏好檔內容的步驟: 建立參考到SharedPreferences物件的欄位。 用「getSharedePreferences(String prefName, int operateMode)」方法,取得SharedPreferences類別的實體物件。 透過SharedPreferences物件的「edit()」方法建立此偏好檔的編輯器(Editor)物件。 執行Editor物件的「clear()」方法。 執行Editor物件的「apply()」或「commit()」方法,執行之後此SharedPreferences物件將只剩下同樣在這次交付中的資料,這次交付前的資料全部被清除。

二、使用者資料存取範例 UsedPreference Test範例 簡單的模擬要求使用者在第一次使用時登錄個人資料與密碼,以後則比對密碼確認是否是合格用戶。 範例執行時先檢查是否存有使用者個人資料,如果資料存在則將資料顯示出來(資料讀取);如果資料不存在,則顯示相關資料欄位與「新增」鈕。使用者輸入姓名、密碼與確認欄資料。 範例詳細內容請參考原書 code 17-2。

要驗證是否存在這個偏好檔,可以透過「adb shell」命令列指令,執行步驟如下: 從「開始」功能表開啟「命令提示字元」工具。 輸入「adb shell」,進入shell中,此時命令提示字元改變成「#」符號。 在命令提示字元「#」後輸入「cd /data/data/<專案套件>/shared-prefs」格式的命令,其中「cd」是更換目錄命令。 ;對目前範例應輸入「cd /data/data/ com.example.userpreferencetest /shared-prefs」。 在命令提示字元「#」後輸入「ls」命令。此命令要求列示出此目錄內容清單。 從顯示的內容清單可以看到指定的偏好檔。

三、內建記憶體的檔案存取 Android仍然支援原本Java的檔案管理方法,檔案可以透過輸出串流直接存在行動裝置的內建記憶體中(存在裝置的「/data/data/<專案套件>/files/<檔名>」),預設存在內建記憶體中的檔案是屬於此應用程式私有的,別的應用程式不能存取這些檔案。 對於已經儲存的檔案內容,也能透過輸入串流讀取檔案的內容。

建立及寫入內建記憶體檔案的步驟如下: 利用「openFileOutput(String filename, int Mode)」取得檔案輸出串流(FileOutputStream)物件。 第1 個參數是要寫入的檔案名稱。 第2個整數參數是此檔案的操作模式,可以使用的模式有: MODE_PRIVATE:0,建立的檔案只能用於此應用程式。 MODE_WORLD_READABLE:1,建立的檔案允許其他應用程式讀取。 MODE_WORLD_WRITEABLE:2,建立的檔案允許其他應用程式修改。 MODE_APPEND:32768,如果指定的檔案已經存在,設定此模式會將寫入的資料添加在原內容後面,而不是取代原內容。

透過FileOutputStream物件的「write()」方法將資料寫至檔案。 透過FileOutputStream物件的「close()」方法關閉檔案。 要讀取存在內建記憶體中的檔案內容,則先以「openFileInput(String name)」方法取得檔案輸入串流(FileInputStream)物件,然後以「read(byte[] buffer)」方法讀取位元組陣列,至於陣列大小可以透過FileInputStream物件的「available()」方法得到。

InnerFileAccess Test範例 佈局中有2個EditText元件(writeTxt與readTxt),及2個Button元件(writeBtn與readBtn) 。 當使用者按下「writeBtn」鈕,程式先判斷「writeTxt」元件是否已經鍵入內容;如果已經鍵入,則將輸入的內容以輸出串流存至裝置內建記憶體的「mylocalfile.txt」檔案。 當使用者按下「readBtn」鈕,程式以輸入串流讀取mylocalfile.txt檔案,並將讀取的內容顯示於「readTxt」元件。 範例詳細內容請參考原書 code 17-4。

四、外部檔案存取 如果有大量資料儲存的需求時,則可以利用傳統檔案串流方式,將資料存在「SD卡」中。 ExternalFileAccess Test範例 採用與上一節範例InnerFileAccess Test相同的處理邏輯,只不過這次是將資料存在「SD卡」中。 先在專案的AndroidManifest.xml加入以下對外部儲存裝置寫入的許可申請: <uses-permission android:name="android.permission. WRITE_EXTERNAL_STORAGE" />

範例詳細內容請參考原書 code 17-5。