13

私たちのアプリでは、「Share via」メニューに表示したいと考えています。そこで、このインテント フィルターをアクティビティに追加しました。

<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="application/*" />
    <data android:mimeType="audio/*" />
    <data android:mimeType="image/*" />
    <data android:mimeType="text/*" />
    <data android:mimeType="video/*" />
</intent-filter>

動作し、アプリが [共有] メニューに表示されます。

それにもかかわらず、インテント フィルターは、達成したいことを正確には実行しません。

  1. MIME タイプが何であれ、すべてのファイルのメニューに表示したい
  2. ファイルに対してのみ表示したい。これまで、ユーザーがシンプルなテキストを共有したい場合、その MIME タイプは text/plain になるため、アプリがメニューに表示されますが、それは望ましくありません。

すべてのファイルとファイルのみの正しいインテントフィルターは何ですか?

前もって感謝します。


私たちは、scheme=file と host="" または "*" を追加しようとしましたが、多くのアプリが schema=content を使用してファイルベースのコンテンツを共有しているため、機能しません。

4

2 に答える 2

7

MIME タイプが何であれ、すべてのファイルのメニューに表示したい

の MIME タイプを試してください*/*

ファイルに対してのみ表示したい。そして今まで、ユーザーが単純なテキストを共有したい場合、その MIME タイプは text/plain になるため、アプリがメニューに表示されますが、それは望ましくありません。私たちは、scheme=file と host="" または "*" を追加しようとしましたが、多くのアプリが schema=content を使用してファイルベースのコンテンツを共有しているため、機能しません。

次に<data>、 のスキーム用と のスキーム用の 2 つの要素がcontentありfileます。

<data android:mimeType="*/*" />
<data android:scheme="content" />
<data android:scheme="file" />

ただし、contentスキームが必ずしもファイルであるとは限らないことに注意してください。

于 2012-09-03T12:39:38.320 に答える
1
  1. 任意の MIME タイプで呼び出されたい場合は、フィルターに単一の鉱山タイプを配置しないでください。
  2. scheme="file"ファイルでのみ実行する答えです。サードパーティ アプリケーションがデータを として渡すと、content(定義上) ファイルではなくなります。
于 2012-09-03T12:41:32.497 に答える