背景画像を設定したアプリケーションを作成しました。ここで、ギャラリーから画像を選択して、アプリケーションの背景として設定したいと考えています。この部分はできています。ただし、アプリケーションを再度開くとデフォルトの画像が設定されるため、この選択した画像をアプリケーションの背景に永続的に設定することも必要です。
再度変更するまで、選択した画像を永続的に保存するにはどうすればよいですか?
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bn= (Button) findViewById(R.id.button);
SharedPreferences sp = getSharedPreferences("student", MODE_PRIVATE);
final SharedPreferences.Editor spedit = sp.edit();
v = R.drawable.back;
spedit.putInt("background", v);
RelativeLayout bg = (RelativeLayout) findViewById(R.id.abc);
bg.setBackgroundResource(v);
bn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent i = new Intent(
Intent.ACTION_PICK,
android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
startActivityForResult(i, 101);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 101 && resultCode == RESULT_OK && null != data) {
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver().query(selectedImage,
filePathColumn, null, null, null);
cursor.moveToFirst();
int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
String picturePath = cursor.getString(columnIndex);
cursor.close();
bitmap = BitmapFactory.decodeFile(picturePath);
Drawable d = new BitmapDrawable(getResources(),bitmap);
RelativeLayout bg = (RelativeLayout) findViewById(R.id.abc);
bg.setBackground(d);
}
}
アプリを初めて実行したときにデフォルトの背景が表示され、背景を変更すると、その画像がさらに起動したときに表示されるようにしたいと考えています。