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

File 생성 후 MediaScan시 폴더가 아니라 파일로 뜹니다.

0 추천

현재 구글픽폰(7.0)으로 작업을 하고 있습니다.

기존 롤리팝(5.1)에서 잘 사용했던 코드들이 안되서 새로 만들고 있는데

폴더를 생성 후 미디어 스캐닝을 하는데 핸드폰탐색기에서는 디렉토리로 뜨는데,

PC와 연결하면 파일로 잡혀서 폴더를 사용할 수가 없네요..

같은 증상 겪으신분 계신가요?

난감하네요..;; 구글링해도 스캐닝만 엄청 나오고 같은 증상인걸 못찾겠네요ㅠㅠ

 

 

코드랑 PC와 연결했을때 사진입니다.

mGVRContext.getcontext 부분은 VR관련 SDK를 사용중이라 context를 받으려면 아래처럼 사용해야지만 가능합니다.

 

private void CreateFolder(){
    String rootpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Video/";
    String normalpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/a/";
    String path180 = Environment.getExternalStorageDirectory().getAbsolutePath()+"/b/";
    String path360 = Environment.getExternalStorageDirectory().getAbsolutePath()+"/c/";



    File file = null;
    file = new File(rootpath);
    if (!file.exists()){
        file.mkdir();
    }
    file = new File(normalpath);
    if (!file.exists()){
        file.mkdir();
    }
    file = new File(path180);
    if (!file.exists()){
        file.mkdir();
    }
    file = new File(path360);
    if (!file.exists()){
        file.mkdir();
    }

    MediaScannerConnection.scanFile(mGVRContext.getContext(), new String[]{rootpath, normalpath, path180, path360}, null, null);

}
대화니 (1,120 포인트) 님이 2017년 7월 13일 질문

2개의 답변

0 추천
 
채택된 답변

자답입니다.

contentResolver를 이용하여 강제로 폴더를 스캐닝했습니다!

 

private void CreateFolder(){
        String rootpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Video";
        String normalpath = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Video/A";
        String path180 = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Video/B";
        String path360 = Environment.getExternalStorageDirectory().getAbsolutePath()+"/Video/C";



        File file = null;
        file = new File(rootpath);
        if (!file.exists()){
            file.mkdir();
        }
        file = new File(normalpath);
        if (!file.exists()){
            file.mkdir();
        }
        file = new File(path180);
        if (!file.exists()){
            file.mkdir();
        }
        file = new File(path360);
        if (!file.exists()){
            file.mkdir();
        }

//        MediaScannerConnection.scanFile(mGVRContext.getContext(), new String[]{rootpath, normalpath, path180, path360}, null, null);

        String[] FolderList = {"/Video", "/Video/A", "/Video/B", "/Video/C"};

        for (int i=0; i<4; i++){
            int DIR_FORMAT = 0x3001;
            Uri MediaUri = MediaStore.Files.getContentUri("external");

            ContentValues values = new ContentValues();
            values.put(MediaStore.MediaColumns.DATA, Environment.getExternalStorageDirectory().getAbsolutePath() + FolderList[i]);
            values.put("format", DIR_FORMAT);
            values.put(MediaStore.MediaColumns.DATE_MODIFIED, System.currentTimeMillis() / 1000);
            mGVRContext.getContext().getContentResolver().insert(MediaUri, values);
        }

    }
대화니 (1,120 포인트) 님이 2017년 7월 13일 답변
0 추천
공식 API문서에 따르면 media scan은 File에 대해 동작합니다.
익명사용자 님이 2017년 7월 13일 답변
기존에는 파일이 저장될 때 폴더안의 파일을 스캐닝 했었었는데 폴더까지 스캐닝이 되었었습니다.
빈폴더만 생성할 때 어떻게 스캐닝을 진행해야될까요?
기존에 되던 것은 운좋게 오류없이 그냥 잘 되었던 것입니다.
공식 API에는 File만 된다고 되어있으니 빈폴더는 아마도 안될 겁니다.
해당 폴더에 빈 파일을 만들어서 그 파일을 media scan 하는 것은 가능하겠네요.
넹넹, 답변 감사합니다~~
...