美文网首页
andorid 获取系统分享进来uri(vcf文件)

andorid 获取系统分享进来uri(vcf文件)

作者: Pino | 来源:发表于2019-08-09 15:54 被阅读0次
    /**
         * @Author Peng
         * @Date 2019/8/9 14:46
         * @Describe 根据uri 把数据写入vcf文件
         */
        public String getPathByUri(Uri contentUri) {
            String path = Environment.getExternalStorageDirectory().toString() + File.separator + fileName;
            AssetFileDescriptor fd;
            try {
                fd = this.getContentResolver().openAssetFileDescriptor(contentUri, "r");
                // 根据uri转化文件流形式
                FileInputStream fis = fd.createInputStream();
                byte[] data = new byte[1024 * 1];
                // 创建一个向指定 File 对象表示的文件中写入数据的文件输出流。
                FileOutputStream fout = new FileOutputStream(path, false);
                int len = -1;
                // 读取fis的流数据,写入到文件的流当中
                while ((len = fis.read(data)) != -1) {
                    //把转化后的流写到vcf文件中
                    fout.write(data, 0, len);
                }
                return path;
            } catch (Exception e1) {
                e1.printStackTrace();
            }
            return null;
        }
        /**
         * @Author Peng
         * @Date 2019/8/9 14:49
         * @Describe 根据uri获取文件名
         */
        private String getRealPathFromURI(Uri contentUri) {
            Cursor cursor = getContentResolver().query(contentUri, null, null, null, null);
            int columnCount = cursor.getColumnCount();
            Log.e("tage", columnCount + "");
            if (cursor.moveToNext()) {
                String textName = cursor.getString(cursor.getColumnIndex("_display_name"));
                return textName;
            }
            cursor.close();
            return null;
        }
    
    
    // 使用方式
    String filePath=getPathByUri(uri);
    Log.e("TAG","文件路径:"+filePath);
    

    相关文章

      网友评论

          本文标题:andorid 获取系统分享进来uri(vcf文件)

          本文链接:https://www.haomeiwen.com/subject/udyhjctx.html