BitmapFactory.decode()方法在某些Android设备中返回null

时间:2017-05-21 19:59:21

标签: android performance android-bitmap

我在使用位图时遇到了一个奇怪的问题,我有一个活动,我有一个按钮,其中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对象?请建议我解决这个问题的方法。

1 个答案:

答案 0 :(得分:0)

  

如何确保decodeFile()方法始终在所有Android设备上返回decodingBitmap对象?

data.getData()Uri。它不是文件。它通常不指向文件。

此外,我希望您的代码在许多Android设备上失败,因为不要求有ACTION_PICK活动支持从file Uri进行挑选,其中如果您的startActivityForResult()电话会崩溃。

如果您希望用户选择文件,请整合a file-picker library