1

HTTP URL を介して Wi-Fi ネットワーク上のファイル サーバーにアクセスするためのファイル ContentProvider を実装しました。

私がやろうとしているのは、特定のインテントと uri を使用して Android ギャラリー アプリを起動し、ファイル サーバーの特定のディレクトリにある画像ファイルを表示することです。

このコードで 1 つの画像を表示するために 1 つの URI でギャラリー アプリを起動すると、成功することができます。

Intent lance = new Intent();
lance.setAction(Intent.ACTION_VIEW);
String typedata = "image/*";
lance.setType(typedata);
String phuri = "content://" + URI_AUTORITE
                     + "/" + URI_CONTENU_FICHIERS
                     + directory + filename;
Uri uri = Uri.parse(phuri);
lance.setDataAndType(uri, "image/*");
startActivity(lance);

しかし、画像を含むディレクトリの表示を実装するために、さらに一歩進んでいます。このコードを使用して、ClipData オブジェクトを使用して複数の画像を表示しようとしました。

Intent lance = new Intent();
lance.setAction(Intent.ACTION_VIEW);
String typedata = "image/*";
lance.setType(typedata);
String phuri = "content://" + URI_AUTORITE
                     + "/" + URI_CONTENU_FICHIERS
                     + directory + filename;
Uri uri = Uri.parse(phuri);
ClipData ensemble = ClipData.newRawUri("Photos", uri);
lance.setClipData(ensemble);
startActivity(lance);

機能しません: ギャラリー アプリが起動され、アルバムのリストが表示され、ファイル ContentProvider が呼び出されません。

私は何かを見逃していますか、それともギャラリーアプリの開発者にとって問題ですか?

4

1 に答える 1

0

コンテンツ プロバイダの getType() メソッドをオーバーライドして、次のような画像の MIME タイプを返す必要があります。

@Override
public String getType(Uri uri) {
    return "image/*";
}
于 2012-11-21T15:01:19.270 に答える