2016-10-04 4 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 공공 무효 onRequestPermissionsResult (INT의 requestCode가, @NonNull 문자열 [] 권한 @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; 
    } 
} 
관련 문제