我知道这个主题已经存在,但是所有示例都不适用于我的项目。
我尝试通过他的真实路径在ImageView中显示图像。我怎么了?
我尝试了MediaScannerConnection和位图。
通过MediaScanner:
String path = "/storage/emulated/0/Download/Park-2.jpg";
MediaScannerConnection.scanFile(this, new String[] { path }, null, new MediaScannerConnection.OnScanCompletedListener() {
public void onScanCompleted(String path, Uri uri) {
uriImage = uri;
}});
iv.setImageURI(uriImage);
按位图:
iv=findViewById(R.id.imageView);
String path = "/storage/emulated/0/Download/Park-2.jpg";
File imgFile = new File(path);
if(imgFile.exists()){
Bitmap myBitmap = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
iv.setImageBitmap(myBitmap);
}
权限:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
获取路径的代码:
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();
}
}
}
答案 0 :(得分:1)
尝试使用Environment.getExternalStorageDirectory()获取路径。 另外,您可以尝试使用http://square.github.io/picasso/,这确实使您的工作更加轻松。例: Picasso.get()。load(new File(...))。into(imageView);
答案 1 :(得分:0)
在您的代码中添加位图工厂选项,如下所示:
Bitmap bitmap = BitmapFactory.decodeFile("your_path", BitmapFactory.Options())
imageview.setImageBitmap(bitmap)
确保用户允许READ_EXTERNAL_STORAGE权限。