android 识别识别U盘以及读写文件的方法盘以及读写文件的方法
今天小编就为大家分享一篇android 识别U盘以及读写文件的方法,具有很好的参考价值,希望对大家有所帮
助。一起跟随小编过来看看吧
android中读写文件的需求地方很多,其中就包括了识别U盘,弹出U盘,读写U盘的文件等。
那么,如何实现这些需求呢?笔者简单的说下:
1.识别识别U盘:盘:
识别U盘的方法只要是用到了2个android官方类。
它们分别为:ContentResolver和AsyncQueryHandler。表现为前者提供内容给后者读取。
作法如下:作法如下:
1)获取状态并遍历)获取状态并遍历
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)回调数据给)回调数据给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盘挂载或者拔出时都会调用一次,在这期间会调用这个方法,因为我们可以在这回调用执行线
程达到遍历数据的目的,从而数据到U盘和文件的个数,其次是QueryArg是一个自定义类,用于封装我们所需要的数据,以便
区分。下面也贴一下这个类
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盘的方法很简单,跟删除数据库数据基本类似。
1))
ContentResolver cr = mContext.getContentResolver();