2017-12-18 19 views
0

私のアプリのパッケージフォルダにカメラから画像を保存することができましたが、これはどういうことですか、そのフォルダから画像を開くと「Can not open」というメッセージが表示されます。アクティビティフォルダから画像を開くことができませんか?

画像を画像フォルダに移動しようとしましたが、うまくいきました。だから、何が問題なのか。これはこれまで私が試したことです。

public void onActivityCreated(Bundle savedInstanceState) { 
      super.onActivityCreated(savedInstanceState); 
      mFile = new File(getActivity().getExternalFilesDir(null), "pic.jpg"); 
     } 

private static class ImageSaver implements Runnable { 

     /** 
     * The JPEG image 
     */ 
     private final Image mImage; 
     /** 
     * The file we save the image into. 
     */ 
     private final File mFile; 

     ImageSaver(Image image, File file) { 
      mImage = image; 
      mFile = file; 
     } 

     @Override 
     public void run() { 
      ByteBuffer buffer = mImage.getPlanes()[0].getBuffer(); 
      byte[] bytes = new byte[buffer.remaining()]; 
      buffer.get(bytes); 
      FileOutputStream output = null; 
      try { 
       output = new FileOutputStream(mFile); 
       output.write(bytes); 
      } catch (IOException e) { 
       e.printStackTrace(); 
      } finally { 
       mImage.close(); 
       if (null != output) { 
        try { 
         output.close(); 
        } catch (IOException e) { 
         e.printStackTrace(); 
        } 
       } 
      } 
     } 

    } 

    /** 

    */ 

Reading the image 
    public class SingleMediaScanner implements MediaScannerConnection.MediaScannerConnectionClient { 

     private MediaScannerConnection mMs; 
     private File mFile; 

     public SingleMediaScanner(Context context, File f) { 
      mFile = f; 
      mMs = new MediaScannerConnection(context, this); 
      mMs.connect(); 
     } 

     public void onMediaScannerConnected() { 
      mMs.scanFile(mFile.getAbsolutePath(), null); 
     } 

     public void onScanCompleted(String path, Uri uri) { 
      Intent intent = new Intent(Intent.ACTION_VIEW); 
      intent.setData(uri); 
      startActivity(intent); 
      mMs.disconnect(); 
     } 

    } 

b1.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       new SingleMediaScanner(getActivity(), allFiles[0]); 
      } 
     }); 

マニフェスト

<uses-permission android:name="android.permission.CAMERA"/> 
    <uses-permission android:name="android.permission.FLASHLIGHT"/> 
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
    <uses-feature android:name="android.hardware.camera2.full"/> 
+0

にこのファイルを渡したい場合は、あなたのエラーを追加してくださいすることができ質問にログする。 –

+0

@SerjArdovic: - エラーは表示されません。それは、フォルダがプライベートであり、読み取ることができないように感じる。アプリを使わずに手動で画像を開こうとしても、「Couldnot open item」というメッセージが表示されます。しかし、そのフォルダから画像フォルダに画像を移動すると、完全に開きました。 –

+0

ファイルを読み取るコードはありません。あなたはどこで話していますか? – greenapps

答えて

0

あなたが内部のフォルダに

public File getImage(Context context) { 
     try { 
      String nameFile = "sample.jpg"; 
      File folder = context.getFilesDir(); 
      File fileCreated = new File(folder, nameFile); 
      return fileCreated; 
     } catch (Exception ex) { 
      throw ex; 
     } 
    } 

を保存して、あなたのImageSaver

関連する問題