마스터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일 답변
...