下載jar包c(diǎn)ommons-io-2.11.0.jar導(dǎo)入項(xiàng)目工程,導(dǎo)入import org.apache.commons.io.FileUtils;文章來源:http://www.zghlxwxcb.cn/news/detail-665112.html
如果使用系統(tǒng)import android.os.FileUtils;有些手機(jī)不兼容會(huì)導(dǎo)致項(xiàng)目崩潰文章來源地址http://www.zghlxwxcb.cn/news/detail-665112.html
public static File uriToFileApiQ(Uri uri, Context context) {
Log.e("uriToFileApiQ","哦=="+uri);
File file = null;
if(uri == null) return file;
//android10以上轉(zhuǎn)換
if (uri.getScheme().equals(ContentResolver.SCHEME_FILE)) {
file = new File(uri.getPath());
} else if (uri.getScheme().equals(ContentResolver.SCHEME_CONTENT)) {
//把文件復(fù)制到沙盒目錄
ContentResolver contentResolver = context.getContentResolver();
String displayName = System.currentTimeMillis()+ Math.round((Math.random() + 1) * 1000)
+"."+ MimeTypeMap.getSingleton().getExtensionFromMimeType(contentResolver.getType(uri));
// 注釋掉的方法可以獲取到原文件的文件名,但是比較耗時(shí)
// Cursor cursor = contentResolver.query(uri, null, null, null, null);
// if (cursor.moveToFirst()) {
// String displayName = cursor.getString(cursor.getColumnIndex(OpenableColumns.DISPLAY_NAME));}
Log.e("兼容","兼容=="+displayName);
try {
InputStream is = contentResolver.openInputStream(uri);
File cache = new File(context.getExternalFilesDir(Environment.DIRECTORY_PICTURES).getAbsolutePath(), displayName);
FileOutputStream fos = new FileOutputStream(cache);
Log.e("uriToFileApiQ","進(jìn)入=");
// FileUtils.copy(is, fos);//有的手機(jī)會(huì)崩潰
FileUtils.copyInputStreamToFile(is,cache);
Log.e("uriToFileApiQ","來了=");
file = cache;
fos.close();
is.close();
} catch (IOException e) {
Log.e("uriToFileApiQ","報(bào)錯(cuò)="+e.getMessage());
e.printStackTrace();
}
}
return file;
}
到了這里,關(guān)于android uri轉(zhuǎn)換file的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!