andorid 获取系统分享进来uri(vcf文件)
2019-08-09 本文已影响0人
Pino
/**
* @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);