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

마시멜로 파일 저장 관련 문의

0 추천

안녕하세요.

현재  sd카드에 텍스트 파일을 저장하려고 합니다.

이전 버전에서는 문제없이 잘 됐었는데요, 마시멜로에선 권한을 앱 별로 따로 설정해야되더군요.

기종은 노트5, OS는 안드로이드 6.0.1 마시멜로입니다.

저장하는 코드는 아래와 같습니다.

 

public void saveToFile(String filename, String body)
{
    FileOutputStream fos = null;
    try
    {
        final File dir = new File(Environment.getExternalStorageDirectory().getAbsolutePath() + "/Documents/");

        if(!dir.exists())
        {
            if(!dir.mkdir()){
                Log.e("ALERT", "could not create the directories");
            }
        }

        final File myFile = new File(dir, filename + ".txt");

        if(!myFile.exists()){
            myFile.createNewFile();
        }

        fos = new FileOutputStream(myFile);

        fos.write(body.getBytes());
        fos.close();
        Log.e("SAVE","+++++++++++FILE SAVE DONE++++++++++");
    }catch(IOException e)
    {
        e.printStackTrace();
    }
}

나타나는 현상으로는 예외는 발생하지 않는데 지정된 위치에 파일 저장이 안되더군요.

해당 앱에 대해서 설정 들어가서 읽기, 쓰기 권한을 모두 허용한 상태입니다. 그래서 처음에는 읽기조차 안되다가 지금은 쓰기만 안되는 상황이네요.

혹시 솔루션을 아시는분 답변주시면 감사하겠습니다.

GaKims (210 포인트) 님이 2016년 9월 22일 질문

1개의 답변

+1 추천

킷캣 이전버전에서는 매니페스트에 퍼미션만 주면 SD카드에 저장이 가능했습니다.

킷캣(4.4)에서는 아예 기능 자체가 막혔었습니다.

이후 버전인 롤리팝(5.0)에서 우회적으로 가능하게 되었습니다.

간단하게 아래의 문서에 설명되어 있으며,

https://developer.android.com/about/versions/android-5.0.html#Storage

 

소스상으로는 검색해보니 이게 가장 편하실것 같습니다.

http://stackoverflow.com/questions/26744842/how-to-use-the-new-sd-card-access-api-presented-for-lollipop

 

 

 

바램 (19,650 포인트) 님이 2016년 9월 23일 답변
...