2016-10-04 17 views
1

アプリを閉じて再起動した後にギャラリーから選択したImageViewを復元するにはどうすればいいですか?私はSharedPreferencesを使用しています。アプリケーションが閉じられた後にURIの状態を保存するには、それは動作していませんが、画像が再度設定されていない場合は、助けになります。アプリを終了して再起動した後に復元されたImageView

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); 

    } 

} 

} 
+0

私はのためにチェック私のコードを更新し、この問題を解決してきました実行時のアクセス許可 – Juancho92

答えて

0
// 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 

    } 

//許可結果を確認してください。 @Override ます。public void onRequestPermissionsResult(int型requestCode、@NonNull String []型の権限、 @NonNull INT [] grantResults){ スイッチ(requestCode){

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; 
    } 
} 
関連する問題