Сохранение изображение в SharedPreferences или Drawable
Столкнулся с проблемой при сохранение изображения из галереи в SharedPreferences через Uri.
Изображение сохраняется при переходе на другой фрагмент и другое активити, но после перезапуска приложения, изображение теряется. Подскажите пожалуйста, можно ли как то сохранять изображение через Uri, если нельзя то как правильно реализовать сохранение картинки из галереи.
Каша-малашка, которая получилась в результате моих попыток:
public class settings extends Fragment {
Button button;
ImageView interfaceImage;
//Prefs
SharedPreferences sharedPreferences;
static final int GALLERY_REQUEST = 1;
private static Uri uri;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
// Inflate the layout for this fragment
view = inflater.inflate(R.layout.fragment_settings, container, false);
button = view.findViewById(R.id.ButtonSaveSettings);
interfaceImage = view.findViewById(R.id.interfaceImage);
sharedPreferences = requireContext().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
getInterfaceImage();
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
interfaceImage.setImageURI(uri);
}
});
interfaceImage.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent, "title"),GALLERY_REQUEST);
}
});
return view;
}
private void loadSharedPreferences() {
sharedPreferences = requireActivity().getSharedPreferences(PREFERENCES, MODE_PRIVATE);
}
public void setInterfaceImage(){
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(PREF_IMAGE, uri.toString());
editor.apply();
interfaceImage.setImageURI(Uri.parse(String.valueOf(uri)));
}
public void getInterfaceImage(){
String uriImg = sharedPreferences.getString(PREF_IMAGE, "");
if (uri != null){
interfaceImage.setImageURI(Uri.parse(uriImg));
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
uri = data.getData();
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString(PREF_IMAGE, uri.toString());
editor.apply();
interfaceImage.setImageURI(uri);
}
}