سلام شما همون موقع که داری عکس رو از گالری بارگیری میکنی باید آدرس محل ذخیره اون عکس رو هم داخل شی sharedPreferences ذخیره کنی بعد از دفعه اول که کاربر عکس رو انتخاب میکنه از روی آدرس ذخیره شده عکس رو بخونه
با اجرای کد بالا آدرس عکس تو یه رشته ذخیره میشه و هر وقت خواستی میتونی با کد زیر عکس رو بندازی تو بکگراند(API 16 به بالا) :
اما نکته ای که هست اینه که با اجرای اکتیوتی مورد نظر باید چک کنیم که کاربر عکسی انتخاب کرده یا نه
اگر انتخاب کرده باشه داخل شی shared یه استرینگ ذخیره شده اگه نه هیچ مقداری نداریم (null)
پس داخل متد onCreate اکتیوتی یه شرط میذاریم :
ضمنا مجوز خواندن از فایل رو هم فراموش نکنید
کد پیاچپی:
public class ImagePicker extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_selected_images);
setTitle("");
Button imgPicker = ...;
imgPicker.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Intent getImageFromGalleryIntent =
new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.INTERNAL_CONTENT_URI);
startActivityForResult(getImageFromGalleryIntent, 0);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
SharedPreferences pref = getSharedPreferences("images", MODE_PRIVATE);
SharedPreferences.Editor editor = pref.edit();
if (resultCode == Activity.RESULT_OK && data != null) {
String imagePath = getPath(data.getData());
editor.putString("imgPath", imagePath);
editor.apply();
}
}
public String getPath(Uri uri) {
String[] projection = {MediaStore.Images.Media.DATA};
Cursor cursor = managedQuery(uri, projection, null, null, null);
startManagingCursor(cursor);
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
cursor.moveToFirst();
return cursor.getString(column_index);
}
}
با اجرای کد بالا آدرس عکس تو یه رشته ذخیره میشه و هر وقت خواستی میتونی با کد زیر عکس رو بندازی تو بکگراند(API 16 به بالا) :
کد پیاچپی:
LinearLayout l = new LinearLayout(context);
l.setBackground(Drawable.createFromPath(pref.getString("imgPath",null)));
اما نکته ای که هست اینه که با اجرای اکتیوتی مورد نظر باید چک کنیم که کاربر عکسی انتخاب کرده یا نه
اگر انتخاب کرده باشه داخل شی shared یه استرینگ ذخیره شده اگه نه هیچ مقداری نداریم (null)
پس داخل متد onCreate اکتیوتی یه شرط میذاریم :
کد پیاچپی:
if (pref.getString("imgPath",null)!=(null)){
LinearLayout l = new LinearLayout(context);
l.setBackground(Drawable.createFromPath(pref.getString("imgPath",null)));
}
ضمنا مجوز خواندن از فایل رو هم فراموش نکنید