应用关闭并重启后恢复 ImageView

Restored ImageView after app close and restart

如何在关闭并重新启动应用程序后恢复从图库中选取的 ImageView。我正在使用 SharedPreferences。要在应用程序关闭后保存 URI 的状态,但它不工作图像不会再次设置任何帮助将不胜感激。

public class test extends AppCompatActivity {

private static int RESULT_LOAD_IMAGE = 1;
ImageButton buttonLoadImage;

private static int RESULT_LOAD_IMG = 1;
String imgDecodableString;

public String getImagePathFetch;
ImageView imgView;

public String keyImage = "myImage";
public SharedPreferences sharedPrefEnter, sharedPrefGet;
Intent galleryIntent;
Uri selectedImage;

@Override
protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_activity_layout);

    imgView = (ImageView) findViewById(R.id.imageView1);

    sharedPrefGet = PreferenceManager.getDefaultSharedPreferences(this);
    getImagePathFetch = sharedPrefGet.getString(keyImage, "");

    if (!getImagePathFetch.equals("")) {
        // tToast("OnCreate Path=" + getImagePathFetch);

        Uri uri;
        uri = Uri.parse(getImagePathFetch);
        imgView.setImageURI(uri);
    }

    buttonLoadImage = (ImageButton) findViewById(R.id.buttonLoadPicture);
    buttonLoadImage.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {

            AddImage(view);

        }
    });

}

public void AddImage(View view) {

    galleryIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
    // Start the Intent
    startActivityForResult(galleryIntent, RESULT_LOAD_IMG);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    // When an Image is picked
    if (requestCode == RESULT_LOAD_IMG && resultCode == RESULT_OK && null != data) {
        // Get the Image from data

        selectedImage = data.getData();

        sharedPrefEnter = PreferenceManager.getDefaultSharedPreferences(this);
        SharedPreferences.Editor editor = sharedPrefEnter.edit();
        editor.putString(keyImage, selectedImage.toString());
        editor.commit();

        Uri uri = Uri.parse(selectedImage.toString());
        imgView.setImageURI(uri);

    }

}

}
    // get the path of the image
    sharedPrefGet = PreferenceManager.getDefaultSharedPreferences(this);
    getImagePathFetch = sharedPrefGet.getString(keyImage, "");

    if (!getImagePathFetch.equals("")) {
        // tToast("OnCreate Path = " + getImagePathFetch); //TESTING

        // parse path from toString to uri
        uriImage = Uri.parse(getImagePathFetch);

        // explicitly check for the permission at runtime since API 23
        int permissionCheck = ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE);

        // Permission not granted
        if (permissionCheck != PackageManager.PERMISSION_GRANTED) {
            ActivityCompat.requestPermissions(this, new String[] { Manifest.permission.WRITE_EXTERNAL_STORAGE },
                    WRITE_EXTERNAL_STORAGE);
        } else // Permission granted
        {

            InputStream imageStream = null;
            try {
                imageStream = getContentResolver().openInputStream(uriImage);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

            Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
            Bitmap imageResized = getResizedBitmap(yourSelectedImage, 480, 480); // resized
                                                                                    // Image
            imgView.setImageBitmap(imageResized);

        } // end if

    } 

//查看权限结果。 @覆盖 public void onRequestPermissionsResult(int requestCode, @NonNull String[] 权限, @NonNull int[] grantResults) { 切换(请求代码){

    case WRITE_EXTERNAL_STORAGE:
        if ((grantResults.length > 0) && (grantResults[0] == PackageManager.PERMISSION_GRANTED)) {
            InputStream imageStream = null;
            try {
                imageStream = getContentResolver().openInputStream(uriImage);
            } catch (FileNotFoundException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            Bitmap yourSelectedImage = BitmapFactory.decodeStream(imageStream);
            Bitmap imageResized = getResizedBitmap(yourSelectedImage, 480, 480); // resized
                                                                                    // Image
            imgView.setImageBitmap(imageResized);
        }
        break;

    default:
        break;
    }
}