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

이클립스에서 마시멜로 폴더 만들기

0 추천

예전에 만들었던 프로젝트라서 이클립스용 프로젝트입니다...

근데 지금 문제가 생긴 점이..

안드로이드 6.0.1 마시멜로에서 폴더가 안 만들어지고 있습니다. 권한문제로요...

 

이클립스에서 마시멜로 폴더 만드는 방법 아시는 분 계신가요?

public void mkdir() {
 
        if (Build.VERSION.SDK_INT >= 6) {
            Toast.makeText(LinegraphBle.this, "마시멜로 이상의 핸드폰입니다..^^", Toast.LENGTH_SHORT).show();
            if (ActivityCompat.checkSelfPermission(LinegraphBle.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                String str = Environment.getExternalStorageState();
                if ( str.equals(Environment.MEDIA_MOUNTED)) {
 
                    File path= new File(android.os.Environment.getExternalStorageDirectory(),"/NOTICE");
                    //String path = Environment.getExternalStorageDirectory().getAbsolutePath();
                    //File dir = new File(path, "mPM100");
                    if(!path.isDirectory()) {
                        path.mkdirs();
                        Toast.makeText(LinegraphBle.this, "폴더 생성 완료", Toast.LENGTH_SHORT).show();
                    }
                }
                else
                    Toast.makeText(LinegraphBle.this, "SD Card 인식 실패", Toast.LENGTH_SHORT).show();
            } else {
                ActivityCompat.requestPermissions(LinegraphBle.this,
                        new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},
                        REQUEST_WRITE_STORAGE);
 
            }
        } else {
            Toast.makeText(LinegraphBle.this, "롤리팝 이상의 핸드폰입니다..^^", Toast.LENGTH_SHORT).show();
            String str = Environment.getExternalStorageState();
            if ( str.equals(Environment.MEDIA_MOUNTED)) {
 
                File path= new File(android.os.Environment.getExternalStorageDirectory(),"/NOTICE");
                //String path = Environment.getExternalStorageDirectory().getAbsolutePath();
                //File dir = new File(path, "mPM100");
                if(!path.isDirectory()) {
                    path.mkdirs();
                    Toast.makeText(LinegraphBle.this, "폴더 생성 완료", Toast.LENGTH_SHORT).show();
                }
            }
            else
                Toast.makeText(LinegraphBle.this, "SD Card 인식 실패", Toast.LENGTH_SHORT).show();
        }
    }
     
     
    @SuppressLint("Override")
    public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) {
        if (requestCode == REQUEST_CODE_LOCATION) {
            if (grantResults.length == 1 && grantResults[0] == PackageManager.PERMISSION_GRANTED) {
                // success!
                if (Build.VERSION.SDK_INT >= 6) {
                    if (ActivityCompat.checkSelfPermission(LinegraphBle.this, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
                        File path= new File(android.os.Environment.getExternalStorageDirectory(),"/NOTICE");
                        //String path = Environment.getExternalStorageDirectory().getAbsolutePath();
                        //File dir = new File(path, "mPM100");
                        if(!path.isDirectory()) {
                            path.mkdirs();
                            Toast.makeText(LinegraphBle.this, "폴더 생성 완료", Toast.LENGTH_SHORT).show();
                        }
                    else
                        Toast.makeText(LinegraphBle.this, "SD Card 인식 실패", Toast.LENGTH_SHORT).show();
                    }
                }
            } else {
                // Permission was denied or request was cancelled
                Toast.makeText(LinegraphBle.this, "권한이 없어 공유기능을 사용할 수 없습니다.", Toast.LENGTH_SHORT).show();
                //finish();
            }
        }
    }

요것은 이클립스에서 작성한 소스입니다.

권한이 없어 공유기능을 사용할 수 없습니다 라는 메세지만 나오네요..ㅠㅠ

권한 설정하는 그런 팝업창 자체가 나오지 않습니다.

 

소스상에 문제가 없는지해서 올려드리니 검토 부탁드립니다.

앤드류이드 (6,190 포인트) 님이 2016년 8월 16일 질문

2개의 답변

+1 추천
 
채택된 답변

requestPermissions 는 REQUEST_WRITE_STORAGE로 요청했는데.

onRequestPermissionsResult 에서 체크하는 requestCode 는 REQUEST_CODE_LOCATION이군요..

다른 퍼미션 체크를 타서 못 구했다고 나온게 아닐까 합니다. 

 

사악미소 (65,330 포인트) 님이 2016년 8월 17일 답변
앤드류이드님이 2016년 8월 17일 채택됨
감사합니다.^^  해결되었어요.
밑에분도 감사합니다. targetsdk가 21로 되어있더라구요~^^
+1 추천
targetsdk가 23이상인지 확인해보세요.
익명사용자 님이 2016년 8월 17일 답변
...