我有一个ImageView。当你点击ImageView时,它会打开相册,你可以选择一张图片并在ImageView上显示出来。我有一个条件,即当我关闭我的应用程序,然后再打开它时,图片将保留在那里。 因此,我正在使用sharedpreference存储图像Uri。 在打开应用程序时,我检索相同的Uri并尝试在imageView上显示图像。
但是在某些手机上 - 图像看起来很完美,比如Mi(Lollipop),Samsung(KitKat), 但在像Motorola(Marshmallow)和One Plus One(Marshmallow)这样的手机上,图像不会出现。 有什么想法为什么会发生这种情况? 这是我的代码:
为了选择图像,我正在使用
Intent intent=new Intent();intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "Select Picture"), Constants.SELECT_PICTURE);
而在OnActivityResult()函数中的代码是
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==Constants.SELECT_PICTURE && resultCode==RESULT_OK && null!=data) {
Uri uri=data.getData();
Picasso.with(UsersProfileActivity.this)
.load(uri)
.centerCrop()
.resize(200,200)
.into(img_photo);
// This profile image i am storing into a sharedpreference
profile_image=uri.toString();
}
当我从sharedprefrence中检索时,我通过使用Uri.parse(profile_image)
将String转换为uri。
但是如果我注意到,不同安卓手机的uri返回结果如下:
Mi(Lollipop)- Uri=content://media/external/images/media/12415
samsung(KitKat)-Uri=content://media/external/images/media/786
Motorola(Marshmallow)- Uri=content://com.android.providers.media.documents/document/image%3A30731
One Plus One (Marshmallow)- Uri=content://com.android.providers.media.documents/document/image%3A475
因此,当URI内容为“content://media/external/images/media/”时,在ImageView上显示的图像完美无缺,而其他情况则不是。
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
。 - SripadRaj