У меня есть ImageView. Когда вы нажмете на ImageView, он откроет галерею, и вы подберете изображение и покажете его на ImageView. У меня есть условие, что когда я закрываю приложение, а затем открываю его, изображение будет сохраняться там. Поэтому для этого я храню изображение Uri на sharedprefrence. И при открытии приложения я получаю тот же 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 я преобразовываю String в uri с помощью Uri.parse(profile_image)
Однако, если я заметил, uri возвращается для разных телефонов Android, как показано ниже.
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 Perfect, а в других случаях это не