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();
2)

        ContentValues values = new ContentValues();
        values.put(MediaStore.MediaDevice.FIELD_VALID, false);
cr.update(MediaStore.MediaDevice.CONTENT_URI, values, where, selectionArgs);
如此就可弹出U盘。注意:在自己软件中弹出U盘仅改变此软件的U盘状态,对系统无影响。主要原因在于update时提供的Uri仅影响当前包名的内容提供者。

要对自身软件在弹出状态下不重新插拔的前提下,实现重加载笔者暂时没看到有相关方法,若有请告知,谢。


3.读写U盘文件

在前面1中有识别U盘的方法,其中在遍历的时候可以自定义一个回调。

QueryNotify(Uri uri, Cursor cursor)
当然参数的个数或者回调的名字可以自定义,笔者在这里有2个参数,第一个主要用于区分类型,第二个作用在于获取数据。

在这里已经有cursor,因此也不是什么难事了,在这里也不bb如何读数据了。

简单的说下如何写数据。

写数据的方法跟弹出U盘大似相同,都是通过

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

 这2个类来实现。 

mContext.getContentResolver().update(
                                        MediaStore.getContentUri(MediaStore.MediaBase.TABLE_NAME, info.id), values,
                                        "_id=", new String[] { info.id + "" });
如此,就达到了实现更改文件属性的需求了。


如此,大致上就可以完成大致上关于U盘读写识别相关的需求,当然此文也是浅尝辄止,许许多多的细节都要自己去尝试并完善。

感觉你的浏览,若有问题可以留言。






  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 23
    评论
### 回答1: Android U盘读写是指在Android系统设备上使用U盘进行数据传输和存储的过程。在Android系统中,U盘通常使用USB接口与设备连接,通过USB On-The-Go(简称USB OTG)技术可以使设备拥有读写U盘的能力。 要在Android设备上读写U盘,首先需要确保设备支持USB OTG功能,并且安装了相应的驱动程序。然后将U盘插入设备的USB接口,系统会自动识别U盘,并在文件管理器中显示其中的文件文件夹列表。接着就可以像在电脑上操作一样进行文件的拷贝、移动、删除等操作了。 需要注意的是,不同设备对U盘读写的支持程度可能有所不同。有些设备可能只能读取U盘中的文件,而不能写入,或者只能写入部分格式的文件。此外,U盘的格式也会影响设备的读写能力。因此,在使用之前需要先了解设备和U盘的限制,以避免数据丢失或损坏。 总的来说,Android U盘读写功能的便利性和灵活性使其成为很多人进行数据传输和备份的首选方式。对于需要频繁进行数据交换的用户来说,它的作用是不可替代的。 ### 回答2: 对于android u盘读写,首先需要保证你的android设备支持OTG(On-The-Go)功能。 如果你的设备支持OTG,可以通过OTG线连接U盘android设备,然后直接在安卓设备上找到文件管理器,就能看到u盘的存储设备了。 接下来,你可以打开文件管理器,浏览U盘中的文件,并进行读写操作。如果需要复制文件U盘,则直接在文件管理器中选择要复制的文件,然后将其粘贴到U盘的根目录或指定文件夹下即可。同样,如果需要从U盘中复制文件android设备,则选择要复制的文件,将其粘贴到想要存储的android设备文件夹下即可。 需要注意的是,在android设备上对于U盘进行读写操作时,需要牢记安全移除U盘的步骤,否则会将数据损坏。 总的来说,使用OTG线连接U盘android设备,通过文件管理器进行读写操作是十分方便的,因此在出门旅行时,将重要文件存储在U盘中,即可随时实现安卓设备和电脑之间的数据互传。 ### 回答3: Android设备上的U盘读写操作并不像在电脑上那么简单,需要一些必要的前置条件。首先,您需要连接一根OTG(On-The-Go)线缆将U盘Android设备连接起来。OTG线缆的一端是一个Micro USB端口,另一端是一个USB2.0或3.0端口,您应该根据自己的设备来选择合适的线缆类型。 接下来,当您连接U盘后,您的Android设备或许会出现一个提示框,问您想如何处理连接的U盘,这将由您自己决定。然后,您需要查看U盘是否已经正确识别,可以在“文件管理器”应用程序中看到U盘是否出现在文件列表中。如果您不能看到它,请尝试断开连接并重新连接U盘,或者重启您的Android设备并再次连接U盘。 此时您可以打开U盘并开始读写操作了。要复制文件U盘,请单击并长按要复制的文件,选择“复制”,然后进入U盘,再次单击并长按空白区域,选择“粘贴”完成文件复制。同样,您也可以使用相同的方法将U盘上的文件复制到Android设备上,只需要选择粘贴的目标是您的设备内存或SD卡即可。 但是,需要注意的是,在进行读写U盘操作时,请勿在拔出U盘之前来回插拔U盘,否则可能会导致文件损坏。在不需要使用时,应该先卸载U盘,然后再从Android设备上断开连接。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 23
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值