ENOENT (Aucun fichier ou répertoire) Lorsqu'Il y a Un Fichier
Je suis en train de partager UN PNG avec ShareActionProvider dans Android. Quand j'ai ouvert le PNG à l'Uri, il affirme qu'il n'y a aucun fichier trouvé.
open failed: ENOENT (No such file or directory)
même si je suis allé dans le système de fichier et l'ai vu moi-même. J'ai essayé sur mon téléphone et l'AVD avec l'erreur d'enregistrement. J'ai regardé autour, mais n'ont pas trouvé de réponses. Toute aide serait grandement appréciée.
C'est là que j'ai essayer d'ouvrir le fichier:
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);
Si ça aide c'est ici que je l'enregistrer:
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();
}
Enfin le journal des erreurs:
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
OriginalL'auteur Steve Smith | 2013-11-15
Vous devez vous connecter pour publier un commentaire.
La
getFilesDir()
est privé pour que l'application spécifique (c'est à dire, d'autres applications ne peuvent pas lire) comme expliqué dans openFileOutput (qui est le même répertoiregetFilesDir
retourne comme par sa documentation).Si vous essayez de partager des fichiers entre les applications, vous suivez les Le partage de Fichiers guide de formation pour s'assurer que d'autres applications peuvent accéder à vos fichiers.
OriginalL'auteur ianhanniballake
Dans votre enregistrer le code que vous avez:
À votre charge code vous n'avez pas de slash avant "wifiqr/":
Il semble que vous vouliez mettre un "/" avant "wifiqr/" dans votre charger le code. Votre enregistrer le code implique que
getFilesDir()
ne peut pas déjà avoir une barre oblique sur elle.Le nom du fichier qu'il est en train d'essayer d'ouvrir l'est encore imprimé dans votre journal:
Il ne semble pas comme vous vous attendez à avoir un répertoire nommé "fileswifiqr".
Le chaînon manquant dans votre dépannage tentative a été: Alors que vous saviez que le fichier que vous l'intention pour ouvrir existait, vous avez encore besoin de vous assurer que votre code a été fait d'ouvrir le fichier que vous l'intention d'ouvrir.
Et maintenant, le message d'erreur indique
/data/data/com.frostbytedev.wifiqr/files/wifiqr/QRCode.png
, et vous pouvez vérifier dans d'autres moyens que le fichier existe (par exemple,ls /data/data/com.frostbytedev.wifiqr/files/wifiqr/QRCode.png
dans une console affiche le fichier)? Et vous avez imprimé le chemin que vous enregistrez et le chemin que vous êtes chargement et vérifié qu'ils sont les mêmes?Oui, ils sont exactement les mêmes
OriginalL'auteur Jason C