这是我的代码
imgBtn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v) {
Cursor curso1 = dbUtil.getImgBlabreport(strLabReqId, strCat,
strTestCode);
if (curso1.moveToFirst()) {
curso1.moveToFirst();
img = curso1.getBlob(curso1
.getColumnIndex(DbHelper.PHOTO_FIELD));
ByteArrayInputStream imageStream = new ByteArrayInputStream(
img);
bitmap = BitmapFactory.decodeStream(imageStream);
File f1 = context.getCacheDir();
String url = "data/data/com.rajinfotech.patientinfo/cache/";
try {
File dir = new File(url);
if (!dir.exists()) {
dir.mkdirs();
}
OutputStream fOut = null;
File file = new File(url, "reportimg1.png");
if (file.exists())
file.delete();
file.createNewFile();
fOut = new FileOutputStream(file);
bitmap.compress(Bitmap.CompressFormat.PNG, 100, fOut);
fOut.flush();
fOut.close();
ImageView();
} catch (Exception e) {
Log.e("saveToExternalStorage()", e.getMessage());
}
curso1.close();
}
else {
Toast.makeText(context, "No image to visible",
Toast.LENGTH_SHORT).show();
}
}
});
public void ImageView(){
String path = "data/data/com.rajinfotech.patientinfo/cache/reportimg1.png";
// Uri uri = Uri.parse(path);
File targetFile = new File(path);
Uri uri = Uri.fromFile(targetFile);
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(uri, "image/*");
startActivity(intent);
}
在运行此代码时,我的图库以黑屏打开,但图像位于缓存文件夹中,任何人都可以帮我解决这个问题。
答案 0 :(得分:1)
您可以使用文件提供程序
在manifest.xml中
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="be.myapplication"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>
在res / xml中创建file_paths.xml
<paths xmlns:android="http://schemas.android.com/apk/res/android">
<cache-path name="my_cache" path="." />
</paths>
使用
File file = new File(getCacheDir(), "test.png");
Uri uri = FileProvider.getUriForFile(context, "be.myapplication", file);
Intent intent = new Intent();
intent.setAction(Intent.ACTION_VIEW);
intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.setDataAndType(uri, "image/*");
startActivity(intent);
答案 1 :(得分:0)
因为您的程序没有
的读取权限/数据/数据/....
改变路径,如
/ SD卡/ patientinfo /高速缓存/
将解决问题。