【发布时间】:2018-08-27 00:10:30
【问题描述】:
我有一个从图库中选择多张图片的项目,但 imageEncoded = cursor.getString(columnIndex) 返回 null。你能帮助我吗?我花了一周的时间来修复,但还没有。
//This is code select muti image from gallery:
public void capturedCamera1() {
if (ContextCompat.checkSelfPermission(MainActivity.this, android.Manifest.permission.READ_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
Intent intent = new Intent();
intent.setType("image/*");
intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), PICK_IMAGE_REQUEST);
} else {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
requestPermissions(
new String[]{android.Manifest.permission.READ_EXTERNAL_STORAGE},
MY_READ_PERMISSION_REQUEST_CODE);
} else {
}
}
}
//this is result after select image:
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_IMAGE_REQUEST && resultCode == Activity.RESULT_OK && data != null) {
Uri URI = data.getData();
if (URI == null) {
if (data.getClipData() != null) {
ClipData mClipData = data.getClipData();
String[] filePathColumn = {MediaStore.Images.Media.DATA};
ArrayList<Uri> mArrayUri = new ArrayList<Uri>();
for (int i = 0; i < mClipData.getItemCount(); i++) {
ClipData.Item item = mClipData.getItemAt(i);
Uri uri = item.getUri();
mArrayUri.add(uri);
Cursor cursor = getContentResolver().query(uri, filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
if (Build.VERSION.SDK_INT >= 19) {
imageEncoded = cursor.getString(columnIndex);// return null
if (imageEncoded == null) {
Toast.makeText(this, "imageEncode", Toast.LENGTH_LONG).show();
} else {
arrayAddInsurrance.add(new ItemAddInsurrance(BitmapFactory.decodeFile(imageEncoded)));
cursor.close();
apdapterAddInsurrance.notifyDataSetChanged();
}
}
else
{
imageEncoded = cursor.getString(columnIndex);
if (imageEncoded == null) {
Toast.makeText(this, "imageEncode", Toast.LENGTH_LONG).show();
} else {
arrayAddInsurrance.add(new ItemAddInsurrance(BitmapFactory.decodeFile(imageEncoded)));
cursor.close();
apdapterAddInsurrance.notifyDataSetChanged();
}
}
}
}
} else {
String[] FILE = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(URI,
FILE, null, null, null);
if (cursor == null) {
Toast.makeText(this, "CURSOR NULL", Toast.LENGTH_LONG).show();
} else {
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(FILE[0]);
ImageDecode = cursor.getString(columnIndex); return null
}
if (ImageDecode == null) {
Toast.makeText(this, "Null", Toast.LENGTH_LONG).show();
} else {
Bitmap n = BitmapFactory.decodeFile(ImageDecode);
//bitmap decodeFile but ImageDecode null
arrayAddInsurrance.add(new ItemAddInsurrance(n));
//add bitmap into recyclerview
apdapterAddInsurrance.notifyDataSetChanged();
cursor.close();
}
}
}
cursor.getString(columnIndex) 返回 Null 而 URI 不为 null。
你能帮帮我吗?我花了一个星期来修复,但还没有。我因此而感到压力。可路径无真。我不知道如何解决这个问题。
【问题讨论】:
-
>>>>> 转储光标 android.content.ContentResolver$CursorWrapperInner@171998f1 0 { _data=null }
-
我想在从图库中选择时显示多图像回收视图,但 imageEncoded = cursor.getString(columnIndex) 返回 null
-
不,我想使用 recyclerview。添加多张图片 1 次
-
我不用imagview,但是imageEncoded = cursor.getString(columnIndex) null,你能帮帮我吗?
标签: android arrays android-studio arraylist android-recyclerview