博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android 本地文件选择
阅读量:6456 次
发布时间:2019-06-23

本文共 3458 字,大约阅读时间需要 11 分钟。

hot3.png

打开系统文件:

Intent intent = new Intent(Intent.ACTION_GET_CONTENT);                intent.setType("*/*");                intent.addCategory(Intent.CATEGORY_OPENABLE);                try {                    startActivityForResult(Intent.createChooser(intent, getString(R.string.im_text_select_file)), SEND_NORMAL_FILE);                } catch (android.content.ActivityNotFoundException ex) {                    BAUtil.showToast(this, "未找到文件管理应用,请安装文件管理应用后再试");                }

回调方法:

protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);        switch (requestCode) {            case SEND_NORMAL_FILE:                 try {                    String path = "";                    if (Build.VERSION.SDK_INT >= 19) {                        path = handleImageOnKitKat(context, data);                    } else {                        path = handleImageBeforeKitKat(context, data);                    }                    doSendNormalFile(path, BAAttach.TYPE_FILE);                } catch (Exception e) {                    e.printStackTrace();                }               break;}}
@TargetApi(Build.VERSION_CODES.KITKAT)    public static String handleImageOnKitKat(Context context, Intent data) {        Uri uri = data.getData();        if (DocumentsContract.isDocumentUri(context, uri)) {            String docId = DocumentsContract.getDocumentId(uri);            if ("com.android.providers.media.documents".equals(uri.getAuthority())) {                String id = docId.split(":")[1];                String selection = MediaStore.Images.Media._ID + "=" + id;                String type = docId.split(":")[0];                Uri contentUri = null;                if (type.equalsIgnoreCase("image")) {                    contentUri =  MediaStore.Images.Media.EXTERNAL_CONTENT_URI;                } else if (type.equalsIgnoreCase("audio")) {                    contentUri =  MediaStore.Audio.Media.EXTERNAL_CONTENT_URI;                } else if (type.equalsIgnoreCase("video")) {                    contentUri =  MediaStore.Video.Media.EXTERNAL_CONTENT_URI;                }                return getImagePath(context, contentUri, selection);            } else if ("com.android.providers.media.downloads.documents".equals(uri.getAuthority())) {                Uri contentUri = ContentUris.withAppendedId(Uri.parse("content://downloads/public_downloads"),                        Long.valueOf(docId));                return getImagePath(context, contentUri, null);            } else if ("content".equals(uri.getAuthority())) {                return getImagePath(context, uri, null);            } else if ("file".equals(uri.getAuthority())) {                return uri.getPath();            }        }        return "";    }    public static String handleImageBeforeKitKat(Context context, Intent data) {        Uri uri = data.getData();        return getImagePath(context, uri, null);    }    private static String getImagePath(Context context, Uri uri, String selection) {        String path = null;        Cursor cursor = context.getContentResolver().query(uri, null, selection, null, null);        if (cursor != null) {            if (cursor.moveToFirst()) {                path = cursor.getString(cursor.getColumnIndex(MediaStore.Images.Media.DATA));            }            cursor.close();        }        return path;    }

 

转载于:https://my.oschina.net/u/2459282/blog/1334973

你可能感兴趣的文章
Cisco——基于链路的HSRP到ISP网络的基本配置
查看>>
vsftp配置大全---超完整版
查看>>
MVC和MVVM的区别
查看>>
Put Polymer Dialog to Center
查看>>
IDEA-常用插件,使用FindBugs寻找bug,代码分析
查看>>
无盘中用户数据的保存
查看>>
我的友情链接
查看>>
详解TCP三次握手
查看>>
mysql驱动取别名报Column ×× not found 解决方案 -- T1 Holly
查看>>
在一个字符串里面怎么找出最长回文子序列长度
查看>>
wget关闭进度输出
查看>>
我的友情链接
查看>>
本次操作由于这台计算机的限制而被取消
查看>>
用鼠标左键绘制折线,利用鼠标中键或右键终止绘制
查看>>
Math-Model(四)长杆在太阳下的影长度处理方法
查看>>
写给未来的你
查看>>
如何实现基于 Lodop 的 连打、三联二等份打印
查看>>
python2.7.5升级到3.5.0
查看>>
常用电脑的人保护眼睛的方法
查看>>
Centos 6.5 优化 一些基础优化和安全设置
查看>>