Android App2014. 8. 21. 12:14

역시 삽질을 함으로써 실력이 느는건가...

 

구글링을 이틀동안 했다.... ㅠㅠ

 

일단 내가 원하는건

 

이미지 전송받아서 특정폴더에 저장을 하고 위부  이미지 프로그램을로 이미지를 읽는것이였다.

 

한폴더에 저장하는것이야 쉽다.

 

FileOutputStream os = openFileOutput(filename,
     Context.MODE_WORLD_READABLE);

 

 

new FileOutputStream 을 쓰지 못한 이유는 바로 저 !!!!! 권한문제 때문이다....

 

권한이 읽는권한이 있어야..(바로 그냥 CHMOD 쓰고 싶다~~~~~~~ㅠㅠ)

 

Intent를 이용해서 외부에서 이미지를 읽을수 가있다.

 

저게 날 엄청나게 괴롭혔다..

 

일단 openFileoutput은 인자로 String을 받는데 여기서 경로는 못받는다. 오로지 파일이름만 받을수 있다!!!!

 

그러면 이게

 

/data/data/앱이름/files 에 저장이 된다.

 

하지만 난 서브폴더를 만들고 싶었다.

 

/data/data/앱이름/files/서브폴더

 

혹시나 openFileoutput 에 경로를 지정할수 있을까 해서 찾아봤지만 택도 없는소리!!!

 

그렇다면 일단 files폴더에 받아서 copy하면 어떨까... 하... 역시 카피 하는것도 new FileOutputStream을 이용해서 그냥 복사하는거뿐.... ㅠㅠ 그래서 copy받은 파일은 권한이 없다

 

그렇다면 파일에 권한을 직접 줄수는 없을까?

 

file.setReadable(true, false);

 

이렇게 해도 안되길레 아 이건원래 안되나 싶었는데

 

지푸라기 잡는 심정으로

 

intent를 사용하기전에

new java.io.File(mItem.get(position).GetPath()).setReadable(true, false);

 

이런식으로 강제로 읽기 권한을 주니!!!

 

으악!!!!! 된다..

 

이제 더럽고 치사한 openFileoutput쓰지말고 당당하게 new FileoutputStream을 쓰고 나중에 권한 설정만 바꾸자.

 

참고로 폴더도 read되게 만들었다.

 

 File dir = getDir("Gallery", Context.MODE_WORLD_READABLE);
 dir.mkdir();

 

 

 

 

 

 

.

 

 

 

Posted by 동동(이재동)