2

サーバーからファイルをダウンロードし、SDカードのフォルダーに書き込んでいます。書き込みが完了するとすぐに、そのフォルダでメディアスキャンを実行します。ユーザーがファイルを開いて表示しようとすると、Androidのインテントメカニズムを利用して、次のようにインテントを発生させようとします。

Intent myIntent = new Intent(Intent.ACTION_VIEW,Uri.fromFile(tempFile));
// MIME_TYPE could be either of: image/*, video/*, audio/*, text/*
myIntent.setType(MIME_TYPE);
startActivity(Intent.createChooser(myIntent, "Open file using..."));

エミュレーターでは、このインテントに対してカメラアプリケーションが起動されますが、アプリケーションがNPEでクラッシュします。そして、MOTOROLAマイルストーンでは、「表示する画像がありません」というトーストが表示されます。写真は、スキャンが終了するとすぐに、エミュレータと電話の両方のメディアギャラリーに実際に表示されることに注意してください。

ここで何が見逃されているのかわかりません。助けてください。

4

1 に答える 1

1

不思議なことに、

Intent myIntent = new Intent(Intent.ACTION_VIEW,Uri.fromFile(tempFile));
// MIME_TYPE could be either of: image/*, video/*, audio/*, text/*
myIntent.setType(MIME_TYPE);

Intent myIntent = new Intent(Intent.ACTION_VIEW);
// MIME_TYPE could be either of: image/*, video/*, audio/*, text/*
myIntent.setDataAndType(Uri.fromFile(tempFile), MIME_TYPE);

働いた!

于 2010-12-02T13:38:59.620 に答える