Android 将数据从输入流复制到文件输出流 使用生成的文件 试试这个 您必须从代码中删除这一行,只需添加此startActivityForResult(intent,1) 我认为你传递了错误的意图,它倾向于不打开galleryit openDocumentProvider
将其放入您的Android 将数据从输入流复制到文件输出流 使用生成的文件 试试这个 您必须从代码中删除这一行,只需添加此startActivityForResult(intent,1) 我认为你传递了错误的意图,它倾向于不打开galleryit openDocumentProvider,android,Android,将其放入您的OnActivityResult @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (resultCode == RESULT_OK) { if (requestCode == 1 && resultCode == RES
OnActivityResult
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
try {
uri = null;
uri = data.getData();
Bitmap bmp = null;
file_galleryimagepath = null;
bmp = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
File f = new File(getActivity().getCacheDir(), System.currentTimeMillis() + ".jpg");
if (f.exists())
f.delete();
f.createNewFile();
Bitmap bitmap = bmp;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();
file_galleryimagepath = f;
Bitmap map = BitmapFactory.decodeFile(file_galleryimagepath.toString());
iv_userImage.setImageBitmap(map);
}catch (Exception e){
Log.e("204","HFP>>>"+e+"<<catch");
}
}
}
}
@覆盖
ActivityResult上的公共void(int请求代码、int结果代码、意图数据){
super.onActivityResult(请求代码、结果代码、数据);
if(resultCode==RESULT\u OK){
if(requestCode==1&&resultCode==RESULT\u OK&&data!=null&&data.getData()!=null){
试一试{
uri=null;
uri=data.getData();
位图bmp=null;
文件\u galleryimagepath=null;
bmp=MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(),uri);
文件f=新文件(getActivity().getCacheDir(),System.currentTimeMillis()+“.jpg”);
如果(f.exists())
f、 删除();
f、 createNewFile();
位图=bmp;
ByteArrayOutputStream bos=新建ByteArrayOutputStream();
compress(bitmap.CompressFormat.PNG,0/*对于PNG*/,bos被忽略);
字节[]位图数据=bos.toByteArray();
FileOutputStream fos=新的FileOutputStream(f);
fos.写入(位图数据);
fos.flush();
fos.close();
文件\u galleryimagepath=f;
位图映射=BitmapFactory.decodeFile(file_galleryimagepath.toString());
iv_userImage.setImageBitmap(map);
}捕获(例外e){
Log.e(“204”,“HFP>>>”+e+“错误是什么?请查看。您可以共享错误日志吗?请同时检查权限或.getString()方法为null表示我获取的picturepath为null是的,我已在运行时检查了权限alsoso,我们如何根据版本设置不同的格式?目前,对于7.1以上的设备,我获取的piicturepath为null,我未获取任何picturepath本身。是否比较了所选路径?是否发现任何差异它们之间有什么区别?是的,我知道了。对于少数设备,路径以file:///开头,对于少数设备,路径以file开头content:///. 路径以文件开始的设备:///正在崩溃。此链接可能对您有用:我已经在清单中定义了自定义提供程序,请提供@xml/provider\u路径
也可以,也可以提供图像名称
?因为我无法复制图像名称?我没有得到您要求的内容。您能告诉我您想要哪个图像名称吗
case REQUEST_CODE_GALLERY:
if (data == null) {
return;
}
Uri selectedImage = data.getData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
File file = new File(picturePath);
mFileUri = FileProvider.getUriForFile(this, this.getApplicationContext().getPackageName() + ".provider", file);
performCrop();
break;
Uri.fromFile(file);
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode == RESULT_OK) {
if (requestCode == 1 && resultCode == RESULT_OK && data != null && data.getData() != null) {
try {
uri = null;
uri = data.getData();
Bitmap bmp = null;
file_galleryimagepath = null;
bmp = MediaStore.Images.Media.getBitmap(getActivity().getContentResolver(), uri);
File f = new File(getActivity().getCacheDir(), System.currentTimeMillis() + ".jpg");
if (f.exists())
f.delete();
f.createNewFile();
Bitmap bitmap = bmp;
ByteArrayOutputStream bos = new ByteArrayOutputStream();
bitmap.compress(Bitmap.CompressFormat.PNG, 0 /*ignored for PNG*/, bos);
byte[] bitmapdata = bos.toByteArray();
FileOutputStream fos = new FileOutputStream(f);
fos.write(bitmapdata);
fos.flush();
fos.close();
file_galleryimagepath = f;
Bitmap map = BitmapFactory.decodeFile(file_galleryimagepath.toString());
iv_userImage.setImageBitmap(map);
}catch (Exception e){
Log.e("204","HFP>>>"+e+"<<catch");
}
}
}
}