我在使用位图时遇到了一个奇怪的问题,我有一个活动,我有一个按钮,其中onClick()方法设置为selectImage(view),方法定义如下
public void selectImage(View v){
Intent imagePickerIntent = new Intent(Intent.ACTION_PICK);
File imageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
Uri data = Uri.parse(imageDir.getPath());
imagePickerIntent.setDataAndType(data, "image/*");
startActivityForResult(imagePickerIntent, 20);
}
和onActivityResult方法如下:
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode==20){
if(resultCode==RESULT_OK){
Uri outputFileDir = data.getData();
bitmap = BitmapFactory.decodeFile(outputFileDir.getPath(), options);
String result = getImageNameFromUri(outputFileDir);
selectedImageTV = (TextView)findViewById(R.id.selectedImageTV);
selectedImageTV.setText(result);
image.setImageBitmap(bitmap);
}
else{
return;
}
}
}
但是在Jio Lyf mobile(低分辨率)中,decodeFile()方法返回null,而在小米设备上工作正常。
我怎样才能确保decodeFile()方法总是在所有Android设备上返回decodingBitmap对象?请建议我解决这个问题的方法。
答案 0 :(得分:0)
如何确保decodeFile()方法始终在所有Android设备上返回decodingBitmap对象?
data.getData()
是Uri
。它不是文件。它通常不指向文件。
此外,我希望您的代码在许多Android设备上失败,因为不要求有ACTION_PICK
活动支持从file
Uri
进行挑选,其中如果您的startActivityForResult()
电话会崩溃。
如果您希望用户选择文件,请整合a file-picker library。