2017-12-18 2 views
0

Ich kann ein Bild von der Kamera in meinem Paketordner meiner App speichern, aber das ist, was passiert, wenn ich versuche, das Bild aus diesem Ordner zu öffnen, bekomme ich die Nachricht: "Kann nicht öffnen".Kann ein Bild aus dem Aktivitätsordner nicht geöffnet werden?

Ich habe versucht, das Bild in Bilder Ordner zu verschieben, und es öffnete sich gut. Also, was könnte das Problem sein. Das habe ich bisher versucht.

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]); 
      } 
     }); 

Manifest

<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

Können Sie bitte Ihre Fehler hinzufügen log auf die Frage. –

+0

@SerjArdovic: - Ich erhalte keinen Fehler. Es fühlt sich an, als wäre der Ordner privat und kann nicht gelesen werden. Selbst wenn ich versuche, das Bild manuell ohne die App zu öffnen, erhalte ich immer noch die Meldung 'Konnte den Artikel nicht öffnen'. Aber als ich das Bild von diesem Ordner in den Bilderordner verschoben habe, hat es sich perfekt geöffnet. –

+0

Es gibt keinen Code, der Ihre Datei liest. Wo redest du da? – greenapps

Antwort

0

Wenn Sie auf interne Ordner

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; 
     } 
    } 

speichern und dann übergeben Sie diese Datei auf Ihren Imagesaver

Verwandte Themen