2012-09-25 10 views
16

"privat"ファイルシステムに以前に保存されたファイルを開くにはどうしたらいいですか?ファイルはWebサービスによってダウンロードされており、ローカルファイルに保存する必要があります。 インテント(Action_View)を介してファイルを開こうとしたときに「奇妙な」エラーが発生しました。ファイルはファイルシステムに存在しますが(エミュレータ/ eclipseのファイルエクスプローラでファイルを見た)、起動されたガーリーアクティビティには表示されません。写真の代わりに、ギャラリは黒い画面を表示します(アクションバーを除く)。この方法でpdf/movie/mp3ファイルを開こうとすると同じことが起こります(たとえば、ファイルが壊れているなど)。インテントでAndroidでファイルを開く方法

はところで:ローカルFSに格納されているデータは(壊れない)有効で、私は(プル方式を経由して)デバッガからファイルをダウンロードしたファイルは私のワークステーション上で開くことができます...

public void onAttachment(Context context, Attachment attachment) { 
    try { 
     //Attachment is a structured data object that contains of a byte[], filename and mimetype (like image/jpeg) 
     FileOutputStream fos = FileOutputStream fos = context.openFileOutput(attachment.getAttachmentFileName(), Context.MODE_PRIVATE); 
     fos.write(attachment.getBinary()); 
     fos.flush(); 
     fos.close(); 
     File f = context.getFileStreamPath(attachment.getAttachmentFileName()); 
     Uri uri = Uri.fromFile(f);   
     Intent intent = new Intent(Intent.ACTION_VIEW); 
     intent.setDataAndType(uri,attachment.getAttachmentMimetype()); 
     context.startActivity(intent);     
    } catch (IOException e) { 
     e.printStackTrace(); 
    } 
}   
+0

多分それhttp://stackoverflow.com/questions/11068648/launching-an-intent-for-fileを参照してくださいに設定するときに保存された(でも閲覧用)のデータを読み取ることができません-and-mime-type/11088980#11088980が役に立ちます。 – ademar111190

答えて

2

場所を「openFileOutput("fileName", Activity.MODE_WORLD_READABLE)」に設定すると機能します。他のアプリは、「Context.MODE_PRIVATE

other post on stackoverflow

12

あなたのコードにはどのようなタイプのアタッチメントがありますか?おそらく間違ったMIMEタイプを返しますか?

このコードは、私の作品:

File file = new File("EXAMPLE.JPG"); 

// Just example, you should parse file name for extension 
String mime = MimeTypeMap.getSingleton().getMimeTypeFromExtension(".JPG"); 

Intent intent = new Intent(); 
intent.setAction(android.content.Intent.ACTION_VIEW); 
intent.setDataAndType(Uri.fromFile(file), mime); 
startActivityForResult(intent, 10); 
+0

いいえ、これは動作しません...問題は、アクティビティが正常に開始されていることです(galery、movie/audio player、pdf-reader)が、コンテンツ(ファイル)が無効であるようです... –

+0

添付ファイルが正確な活動(Galery/Mediaplayer/PDF-Reader)はまったく開始されませんでした。 –

+0

間違っています。 getMimeTypeFromExtensionのパラメータは、先頭の '。'のないファイル拡張子でなければならない(MUST)。 – armandooj

2

あなたはそのようなSDカード上にないファイルを開くことができません。 ファイルをsdcardにコピーして開く必要があります。

+0

Googleから確認されたリンクを教えてもらえますか(sdkのドキュメント)。私は公式の文書でそれについて何も見つけられませんでした... ところで:画像を扱うことができる自分の活動でファイルを開くと、それは動作します... –

+0

残念ながら私は経験がないので話していませんリンクがあります。しかし、SDCARDにはないファイルをアップロードしたり、電子メールで送信するのと同じ問題があります.Webviewページを開くなどして同じことができます。役立つことを望みます...申し訳ありません.. – Givi

+0

だから私は自分のビューア - このプライベートフォルダに保存されているファイルを処理できる「アクティビティ」? –

関連する問題