2016-10-18 4 views
0

아래 코드를 사용하여 공용 저장소 디렉토리에 이미지를 저장하려고합니다. 그러나이 때 저장/에뮬레이트/0 및 공용 그림 폴더에 저장됩니다. 기본적으로 다른 응용 프로그램에서이 정확한 코드를 사용했으며 제대로 작동합니다. 누구든지 .getExternalStoragePublic 디렉토리가 액세스 가능한/Pictures /를 반환하지 않고 대신 저장소/에뮬레이션/0을 반환하는 이유를 알고 있습니까? 내가 가진Android - 저장/에뮬레이션/0 저장 안 함

는 "사용 - 권한 안드로이드 : 이름 ="android.permission.WRITE_EXTERNAL_STORAGE을 "내 매니페스트 파일

File backupFile; 
File appFolder; 
String path= Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES).getAbsolutePath() + "/CustomFolder"; 
appFolder = new File(path); 
if (!appFolder.exists()) 
    appFolder.mkdir(); 
String fileName = "picture.jpg" 
backupFile = new File(appFolder, fileName); 
FileOutputStream output = null; 
try { 
    output = new FileOutputStream(backupFile); 
    output.write(bytes); 
} catch (IOException e) { 
    e.printStackTrace(); 
} finally { 
    mImage.close(); 
    if (null != output) { 
     try { 
      output.close(); 
     } catch (IOException e) { 
      e.printStackTrace(); 
     } 
    } 
} 
+0

'appFolder.mkdir은(); '와 같은 반환 값을 확인 디렉토리를 작성하는 데 실패 할 수 있습니다. false를 반환하고 코드를 계속 수행하지 않고 반환하면 축배를 표시합니다. – greenapps

+0

'Environment.getExternalStoragePublicDirectory (Environment.DIRECTORY_PICTURES) .getAbsolutePath()'이 예상 한 것과 다른 폴더라고 말할 때 유일한 코드를 게시하는 이유는 무엇입니까? 안 그래요? – greenapps

+0

'이 접근 가능/Pictures /를 반환하지 않고 대신 저장소/에뮬레이트/0'을 반환합니다. 그것은'/ Pictures /'를 결코 반환하지 않지만'/ storage/emulated/0/Pictures'를 반환 할 수 있습니다. – greenapps

답변

0

신경 끄시 고, 나는 그것을 알아 낸 그냥 가지고 밝혀졌습니다."를 사용-권한 안드로이드를 : 매니페스트 파일에 = "android.permission.WRITE_EXTERNAL_STORAGE을"이름은 불충분하고, 나는 그것이 작동하도록하기 전에 다음 코드를 삽입했다 :

int CAMERA_PERMISSION_REQUEST_CODE = 2; 
    int result = ContextCompat.checkSelfPermission(getActivity().getApplicationContext(), Manifest.permission.WRITE_EXTERNAL_STORAGE); 
    if (result != PackageManager.PERMISSION_GRANTED){ 
     if (ActivityCompat.shouldShowRequestPermissionRationale(getActivity(), Manifest.permission.WRITE_EXTERNAL_STORAGE)){ 
      Toast.makeText(getActivity().getApplicationContext(), "External Storage permission needed. Please allow in App Settings for additional functionality.", Toast.LENGTH_LONG).show(); 
     } else { 
      ActivityCompat.requestPermissions(getActivity(),new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE},CAMERA_PERMISSION_REQUEST_CODE); 
     } 
    } 
+0

이것이 문제라면 이미지가 작성되었다고 말하면서 오인 된 것입니다. 다른 장소에서만. – greenapps