我完全不明白有什么问题。是检索还是显示?
在下面我给你一个代码剪断。它适用于 4.4.2 到版本 3。在我的情况下,我正在启动一个照片应用程序,例如画廊。
byte[] global_DATA15 = null;
从 ContactsContract.Data.DATA15 中检索数据
Bitmap myBitMap = BitmapFactory.decodeByteArray(
global_DATA15, 0, global_DATA15.length);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
myBitMap.compress(Bitmap.CompressFormat.PNG, 100, bytes);
String path = Images.Media.insertImage(
myContext.getContentResolver(), myBitMap,
line4, "source: " + Constant.myClassName);
if (path != null) {
boolean isOK = true;
Uri myUri = null;
try {
myUri = Uri.parse(path);
convertedPath = getRealPathFromURI(myContext,
myUri);
} catch (Exception expPhoto) {
isOK = false;
// .... do something
}
if (isOK) {
Intent callPhoto = new Intent(
Intent.ACTION_VIEW, myUri);
callPhoto.setDataAndType(myUri, "image/*");
startActivityForResult(callPhoto,
Constant.photoCallRequestCode);
}
一个子程序
/**
* returns the file path to an content uri
*
* @param context
* @param contentUri
* @return path to picture
*/
public String getRealPathFromURI(Context context, Uri contentUri) {
Cursor cursor = null;
try {
String[] proj = { MediaStore.Images.Media.DATA };
cursor = context.getContentResolver().query(contentUri, proj, null,
null, null);
int column_index = cursor
.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
} finally {
if (cursor != null) {
cursor.close();
}
}
}
也许这有帮助,我不确定。
亲切的问候