国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

android 識別U盤以及讀寫文件的方法

2019-10-21 21:43:29
字體:
供稿:網(wǎng)友

android中讀寫文件的需求地方很多,其中就包括了識別U盤,彈出U盤,讀寫U盤的文件等。

那么,如何實(shí)現(xiàn)這些需求呢?筆者簡單的說下:

1.識別U盤:

識別U盤的方法只要是用到了2個android官方類。

它們分別為:ContentResolver和AsyncQueryHandler。表現(xiàn)為前者提供內(nèi)容給后者讀取。

作法如下:

1)獲取狀態(tài)并遍歷

contentObserver = new ContentObserver(mHandler) {   @Override   public void onChange(boolean selfChange, Uri uri) {    super.onChange(selfChange, uri);    mHandler.removeCallbacks(arg.runnable);    mHandler.postDelayed(arg.runnable, DELAY);   }  };
runnable = new Runnable() {   @Override   public void run() {    mAsyncQueryHandler.startQuery(token, null, uri, projection, selection, selectionArgs,      orderBy);   }  };

2)回調(diào)數(shù)據(jù)給UI

  mAsyncQueryHandler = new AsyncQueryHandler(mCR) {   @Override   protected void onQueryComplete(int token, Object cookie, Cursor cursor) {    super.onQueryComplete(token, cookie, cursor);    if (!mArgs.isEmpty() && token < mArgs.size()) {     QueryArg arg = mArgs.get(token);     if (mCallback != null) {      mCallback.QueryNotify(arg.uri, cursor);     }     if (!cursor.isClosed()) {      cursor.close();     }    }   }  };

簡單的說下,onchanged是在U盤掛載或者拔出時都會調(diào)用一次,在這期間會調(diào)用這個方法,因?yàn)槲覀兛梢栽谶@回調(diào)用執(zhí)行線程達(dá)到遍歷數(shù)據(jù)的目的,從而數(shù)據(jù)到U盤和文件的個數(shù),其次是QueryArg是一個自定義類,用于封裝我們所需要的數(shù)據(jù),以便區(qū)分。下面也貼一下這個類

 protected static final class QueryArg {  public Uri uri;  public String[] projection;  public String selection;  public String[] selectionArgs;  public String orderBy;  public ContentObserver contentObserver;  public Runnable runnable;  public Object cookie; }

2.安全彈出U盤

彈出U盤的方法很簡單,跟刪除數(shù)據(jù)庫數(shù)據(jù)基本類似。

1)

ContentResolver cr = mContext.getContentResolver();

2)

  ContentValues values = new ContentValues();  values.put(MediaStore.MediaDevice.FIELD_VALID, false);cr.update(MediaStore.MediaDevice.CONTENT_URI, values, where, selectionArgs);

如此就可彈出U盤。注意:在自己軟件中彈出U盤僅改變此軟件的U盤狀態(tài),對系統(tǒng)無影響。主要原因在于update時提供的Uri僅影響當(dāng)前包名的內(nèi)容提供者。

要對自身軟件在彈出狀態(tài)下不重新插拔的前提下,實(shí)現(xiàn)重加載筆者暫時沒看到有相關(guān)方法,若有請告知,謝。

3.讀寫U盤文件

在前面1中有識別U盤的方法,其中在遍歷的時候可以自定義一個回調(diào)。

QueryNotify(Uri uri, Cursor cursor)

當(dāng)然參數(shù)的個數(shù)或者回調(diào)的名字可以自定義,筆者在這里有2個參數(shù),第一個主要用于區(qū)分類型,第二個作用在于獲取數(shù)據(jù)。

在這里已經(jīng)有cursor,因此也不是什么難事了,在這里也不bb如何讀數(shù)據(jù)了。

簡單的說下如何寫數(shù)據(jù)。

寫數(shù)據(jù)的方法跟彈出U盤大似相同,都是通過

ContentResolver <pre name="code" class="html">ContentValues 

這2個類來實(shí)現(xiàn)。

mContext.getContentResolver().update(          MediaStore.getContentUri(MediaStore.MediaBase.TABLE_NAME, info.id), values,          "_id=", new String[] { info.id + "" });

如此,就達(dá)到了實(shí)現(xiàn)更改文件屬性的需求了。

如此,大致上就可以完成大致上關(guān)于U盤讀寫識別相關(guān)的需求,當(dāng)然此文也是淺嘗輒止,許許多多的細(xì)節(jié)都要自己去嘗試并完善。

以上這篇android 識別U盤以及讀寫文件的方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網(wǎng)。


注:相關(guān)教程知識閱讀請移步到Android開發(fā)頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 万山特区| 大城县| 奉化市| 罗源县| 新郑市| 大冶市| 汾阳市| 河源市| 磐安县| 崇礼县| 新竹市| 泰来县| 济南市| 综艺| 积石山| 石城县| 高平市| 呈贡县| 濉溪县| 普兰店市| 保德县| 康保县| 汶上县| 西宁市| 高淳县| 当阳市| 深圳市| 拉萨市| 连南| 邯郸市| 隆回县| 会泽县| 沂南县| 天镇县| 南涧| 巫溪县| 聂荣县| 白山市| 六盘水市| 江达县| 弥勒县|