2

apkに含めたファイルを表示したい。サムネイルを小さなImageViewに配置できます。ユーザーがサムネイルをクリックすると、ギャラリー(またはユーザーが使用している画像表示アプリ)を使用してフルサイズで表示したいと思います。

以下はクリックリスナーです。「raw」フォルダーからフルサイズを取り出して、アクティビティを開始します。失敗しました

private OnClickListener showImage = new OnClickListener() {
    public void onClick(View v) {
        Intent intent = new Intent();
        intent.setAction(android.content.Intent.ACTION_VIEW);
        intent.setData(Uri.parse("android.resource://com.invodo.allshareplay/" + R.raw.dropbox_photo1));
        intent.setType("image/jpeg");
        startActivity(intent);

    }

};

--- logcat ----

03-13 11:16:33.704: E/AndroidRuntime(10466): FATAL EXCEPTION: main
03-13 11:16:33.704: E/AndroidRuntime(10466): android.content.ActivityNotFoundException:     No Activity found to handle Intent { act=android.intent.action.VIEW   dat=android.resource://com.invodo.allshareplay/2130968576 }
03-13 11:16:33.704: E/AndroidRuntime(10466):    at android.app.Instrumentation.checkStartActivityResult(Instrumentation.java:1622)

ファイル名を次のように使用するなど、URIパスを取得するためのいくつかの異なるバリエーションを試しました

  intent.setData(Uri.parse("android.resource://com.invodo.allshareplay/raw/dropbox_photo1.jpg"));

エミュレーターでは、ViewImageの開始を通知しますが、次の行を削除しない限り、カメラが停止したことを通知します。

intent.setType("image/jpeg");

コメントアウトすると、アクティビティが見つからずに失敗します。

このコードを実際のデバイスに配置すると、電話に画像が表示されますが、表示したい画像は表示されません。SetType呼び出しを外すと、単に停止します。

適切なURIを取得する際に私が間違ったことをしている可能性があるにもかかわらず、生のリソースとして隠されているjpeg画像を適切に表示する方法について何かアイデアはありますか?

4

1 に答える 1

0

これは、この質問で説明したフローと同様の問題のようです。

推奨される解決策は、ファイルの絶対パスのプレフィックスとして「file://」を追加することです。したがって、インテントは次のように設定する必要があります。

...

Uri hacked_uri = Uri.parse("file://" + uri.getPath());
intent.setDataAndType(hacked_uri, "image/*");
... 

それは私のために働いた...

于 2015-02-19T09:05:00.413 に答える