2016-04-13 17 views
1

Hepsi burdan EBADF (Kötü Dosya Numarası) başarısız okuma:Android Java IOException</p> <p>Ben Android (v18) üzerinde çalışan bir dosya tanımlayıcı bir bitmap oluşturmak çalışırken aşağıdaki hatayı alıyorum, Dosya açıklayıcısı/Giriş Akımı

java.io.IOException: read failed: EBADF (Bad file number) 
at libcore.io.IoBridge.read(IoBridge.java:435) 
at java.io.FileInputStream.read(FileInputStream.java:179) 
at java.io.BufferedInputStream.fillbuf(BufferedInputStream.java:168) 
at java.io.BufferedInputStream.read(BufferedInputStream.java:309) 
at android.graphics.BitmapFactory.nativeDecodeStream(Native Method) 
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:530) 
at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:603) 

Kod çözme işlemini başladığında işaretliyor. Ben orada çevirisini yapmak zorunda yüzden bir int bana dosya tanıtıcı vermek yerli aramaları var (ve geçerli bir sayı olsun) ... Neyse:

 MyNativeCallClassClient client = new MyNativeCallClassClient(); 
     final int fileDescriptor = client.NativeMethodCallGetFD(getShared_memory_name(), getShared_memory_size()); 
     try { 
      Log.d(TAG, "file descriptor number: " + fileDescriptor); 
      ParcelFileDescriptor fd = ParcelFileDescriptor.fromFd(fileDescriptor); 
      FileDescriptor realFD = fd.getFileDescriptor(); 
      Bitmap aBitMap= BitmapFactory.decodeFileDescriptor(realFD); 
      Log.d(TAG, "BitMap Generated: byte count: " + aBitMap.getByteCount() + ", height: " + aBitMap.getHeight() + ", width: " + aBitMap.getWidth()); 

     } 
     catch (IOException ex) { 
      Log.e(TAG, "Issue with decoding file descriptor", ex); 
     } 

NOT şöyle Benim kodudur Kullanılan tüm değişkenleri kontrol ediyorum ve 'decodeFileDescriptor (...)' noktasına kadar null değiller. Ben de Android'de aşağıdaki izinleri vardı emin yaptı: Ayrıca

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> 
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> 

, ben bile bir iş parçacığı sorun (olmamalı yoktu emin olmak için yukarıda listelenen kod etrafında bir senkronize blok koyarak çalıştı, ancak sadece durumda yapılır). Düşüncesi olan var mı? Umarım yeterince bilgi verdim. Teşekkür ederim.

cevap

0

Sorununuzu çözdüm. Dosya tanıtıcısında bir önek eksikti. Eğer bu kimseye yardım etmezse özür dilerim. Biri buna rastlarsa ve yukarıdaki benzer bir duruma bir çözüm varsa, lütfen gönderin. Teşekkürler.

İlgili konular