2013-11-15 45 views
4

我想與大家分享ShareActionProvider一個PNG的Android系統。當我向Uri打開PNG時,它說沒有找到任何文件。 open failed: ENOENT (No such file or directory)即使我已經進入文件系統並親眼看到它。我已經在我的手機和AVD上嘗試了它,並顯示保存錯誤。我環顧四周,但沒有找到答案。任何幫助將非常感激。ENOENT(沒有這樣的文件或目錄)時,有一個文件有

這裏是我嘗試打開該文件:

File file = new File(getFilesDir()+"wifiqr/", "QRCode.png"); 
       file.setReadable(true, false); 
       Uri uri = Uri.fromFile(file); 
       Intent intent = new Intent(Intent.ACTION_SEND); 
       intent.setType("image/*"); 
       intent.putExtra(Intent.EXTRA_STREAM,uri); 
       provider.setShareIntent(intent); 

如果它幫助這裏是我保存它:

String fileName = getFilesDir()+"/wifiqr/" + "QRCode.png"; 
       etSSID.setText(fileName); 
       OutputStream stream = null; 
       try { 
        stream = new FileOutputStream(fileName); 
        bmp.compress(Bitmap.CompressFormat.PNG, 80, stream); 
        stream.close(); 
       } catch (FileNotFoundException e) { 
        e.printStackTrace(); 
       } catch (IOException e) { 
        e.printStackTrace(); 
       } 

最後的錯誤日誌:

11-15 02:34:43.243  594-892/com.android.mms E/Mms/media: IOException caught while opening or reading stream 
     java.io.FileNotFoundException: /data/data/com.frostbytedev.wifiqr/fileswifiqr/QRCode.png: open failed: ENOENT (No such file or directory) 
     at libcore.io.IoBridge.open(IoBridge.java:416) 
     at java.io.FileInputStream.<init>(FileInputStream.java:78) 
     at java.io.FileInputStream.<init>(FileInputStream.java:105) 
     at android.content.ContentResolver.openInputStream(ContentResolver.java:447) 
     at com.android.mms.model.MediaModel.initMediaSize(MediaModel.java:235) 
     at com.android.mms.model.MediaModel.<init>(MediaModel.java:74) 
     at com.android.mms.model.RegionMediaModel.<init>(RegionMediaModel.java:36) 
     at com.android.mms.model.RegionMediaModel.<init>(RegionMediaModel.java:31) 
     at com.android.mms.model.ImageModel.<init>(ImageModel.java:73) 
     at com.android.mms.ui.SlideshowEditor.changeImage(SlideshowEditor.java:163) 
     at com.android.mms.data.WorkingMessage.internalChangeMedia(WorkingMessage.java:640) 
     at com.android.mms.data.WorkingMessage.changeMedia(WorkingMessage.java:588) 
     at com.android.mms.data.WorkingMessage.setAttachment(WorkingMessage.java:453) 
     at com.android.mms.ui.ComposeMessageActivity.addImage(ComposeMessageActivity.java:3150) 
     at com.android.mms.ui.ComposeMessageActivity.addAttachment(ComposeMessageActivity.java:3291) 
     at com.android.mms.ui.ComposeMessageActivity.access$5900(ComposeMessageActivity.java:167) 
     at com.android.mms.ui.ComposeMessageActivity$35.run(ComposeMessageActivity.java:3236) 
     at com.android.mms.ui.AsyncDialog$ModalDialogAsyncTask.doInBackground(AsyncDialog.java:129) 
     at com.android.mms.ui.AsyncDialog$ModalDialogAsyncTask.doInBackground(AsyncDialog.java:84) 
     at android.os.AsyncTask$2.call(AsyncTask.java:287) 
     at java.util.concurrent.FutureTask.run(FutureTask.java:234) 
     at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:230) 
     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1080) 
     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:573) 
     at java.lang.Thread.run(Thread.java:856) 
     Caused by: libcore.io.ErrnoException: open failed: ENOENT (No such file or directory) 
     at libcore.io.Posix.open(Native Method) 
     at libcore.io.BlockGuardOs.open(BlockGuardOs.java:110) 
     at libcore.io.IoBridge.open(IoBridge.java:400) 
     ... 24 more 

回答

1

在您節省代碼您有:

String fileName = getFilesDir()+"/wifiqr/" + "QRCode.png"; 

在你的加載代碼你有「wifiqr /」前沒有領先斜線:

File file = new File(getFilesDir()+"wifiqr/", "QRCode.png"); 

看來你的意思是把一個「/」前「wifiqr /」在你的加載代碼。您的保存代碼意味着getFilesDir()可能尚未在其上有斜線。

它正試圖打開即使在日誌打印的文件的名稱:

/data/data/com.frostbytedev.wifiqr/fileswifiqr/QRCode.png 

它似乎並不像你期望有一個名爲「fileswifiqr」目錄。

您的故障排除嘗試中缺少的鏈接是:雖然您知道該文件是意圖打開存在,但您仍然需要確保您的代碼實際上是打開您打算打開的文件。

+0

修正了這個錯誤,我仍然看到路徑,他們有相同的確切路徑 –

+0

現在錯誤說'/ data/data/com.frostbytedev.wifiqr/files/wifiqr/QRCode.png' ,你可以用其他方式驗證該文件存在(如:'LS /數據/數據/ com.frostbytedev.wifiqr /文件/ wifiqr/QRCode.png'在控制檯顯示文件)?並且您已經打印出您要保存的路徑以及您從中加載的路徑,並驗證它們是否相同? –

+0

是的,它們完全相同 –

相關問題