2012-09-03 7 views
11

私たちのアプリでは、[共有]メニューに表示します。そこで、このインテントフィルターをアクティビティに追加しました:ファイルのインテントフィルタ

<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になるので、私たちのアプリはメニューに表示され、私たちはそれを望んでいません。

正しいインテントフィルタは、すべてのファイルとファイルのみに適用されますか?

ありがとうございます。


我々は=「」または「*」スキーム=ファイルとホストを追加しようとしましたが、それは、多くのアプリは、ファイルベースのコンテンツを共有する仕組み=コンテンツを使用動作しません。

+0

古い質問を残して申し訳ありません、カテゴリ "android.intent.category.OPENABLE"を使ってみました。動作しているようです。 ChromeからWebページを共有することは表示されず、Solid Explorerからファイルを共有することが示されます。これを使用するのが安全か、それともスキームではより良いですか? –

+0

@Giorgio Aresu、あなたが何を求めているのかははっきりしない。両方のオプションを試しましたか? – Snicolas

+0

私は両方を試しました。 Answerで説明したスキームでは、私は共有時に表示さえしません。カテゴリとして_openable_はファイルマネージャからファイルを共有していますが、ブラウザからプレーンテキストを共有しません。これは私が欲しいものです:ファイル(すべてのMIMEタイプ)、ファイル(テキストではない)、まさにあなたの質問で欲しいものです。さらなるテストでは、いくつかのアプリケーション(Photoshop express、gallery)が、urisをプレーンテキストとして、または「画像:3710」のような形式で共有することが判明しました。私はそれを把握しようとしています... –

答えて

7

我々はそこにMIMEタイプが*/*のMIMEタイプを試してみてください

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

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

は、2つの<data>要素、contentのスキームのための1つおよびfileのスキームのいずれかを有しています。

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

しかし、contentスキームが、それは必ずしもファイルであることを意味するものではありません注意してください。

+6

これを使用して、私たちは共有メニューには、もはや私たちがインストールしたファイルエクスプローラのいずれにも表示されません。 – Snicolas

+0

@Snicolas:OK、2つの ''要素を各スキームに1つずつ試してみてください。 – CommonsWare

+0

いいえ、2つのインテントフィルタを使用するのではなく、各スキームごとに1つずつ使用しませんでした。 – Snicolas

1
  1. あなたはどんなMIMEタイプのために呼び出すことがしたい場合は、
  2. scheme="file"はファイルのみで実行する答えであるフィルタで単一鉱山タイプを置かないでください。今度は第三者のアプリケーションがデータをcontentとして渡すと、それはもうファイルではなくなります。
+1

これを使用すると、私たちがインストールしたファイルエクスプローラではなく、もう共有メニューには表示されません。 – Snicolas

関連する問題