2016-10-18 18 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 /を返しておらず、代わりにstorage/emulated/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

関連する問題