마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

ImageView 클릭하면 갤러리 열어서 사진 선택후 ImageView에 띄우려고 하는데 어떤 프로젝트에선 되고 어떤 프로젝트에선 안됩니다.

0 추천

 

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private static final int RESULT_LOAD_IMAGE = 1;
    private static final String SERVER_ADDRESS = "http://localhost";

    ImageView imageToUpload;
    Button bUploadImage;
    EditText uploadImageName;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageToUpload = (ImageView)findViewById(R.id.imageToUpload);
        bUploadImage = (Button)findViewById(R.id.bUploadImage);
        uploadImageName = (EditText)findViewById(R.id.etUploadName);

        imageToUpload.setOnClickListener(this);
        bUploadImage.setOnClickListener(this);
        uploadImageName.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.imageToUpload :
                SelectImage(RESULT_LOAD_IMAGE);
                break;

            case R.id.bUploadImage :

                break;

            case R.id.bDownloadImage :

                break;

            default:
                break;
        }
    }

    private void SelectImage(int i){
        Intent galleryIntent = new Intent(Intent.ACTION_PICK, MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
        startActivityForResult(galleryIntent, i);
    }

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

        if(requestCode == RESULT_LOAD_IMAGE && resultCode == RESULT_OK && data != null){
            Uri selectedImage = data.getData();
            imageToUpload.setImageURI(selectedImage);
        }
    }
}
 
유튜브에 있는 영상을 따라한 코드 입니다. 
퍼미션도 인터넷이랑 EXTERNAL_STORGE 두개 주고
 이외엔 별 주는 게 없는데
맨처음 만든 임시 프로젝트에서는 되는데 
옮기려고 했던 본 프로젝트와 또 새로 만든 프로젝트에선 
작동을 안하는데 도대체 뭐가 이유인지 잘 모르겠습니다.
 
이전에도 ListView를 임시프로젝트에서 
유튜브따라서 완성하고 본 프로젝트로 옮기려고 했는데 
안되서 포기하려다가 임시프로젝트를 본 프로젝트화시켜서 
쓰고 있는데 또 그러기엔 이후에 비슷한 일이 생기면 
계속 그래야할것같아서 원인을 찾고 싶습니다.... 
왜 이런 현상이 생기는 걸까요
Mustone (350 포인트) 님이 2017년 8월 17일 질문

1개의 답변

0 추천
 
채택된 답변
이게 Uri의 Path 문제였던걸로 기억합니다.

getContentResolver.query(uri, null, null, null, null) 을 사용해서 커서로 가져오면 모든 프로젝트에서 되는 걸로 기억합니다.
minor (13,710 포인트) 님이 2017년 8월 17일 답변
Mustone님이 2017년 8월 25일 채택됨
감사합니다 한번 해보겠습니다
...