2013-05-16 10 views
9

マニフェストで指定されたインテントフィルタタグに関する詳細情報が必要です。アンドロイドマニフェストのインテントフィルタの下に表示されるスキームとホストタグの数

<intent-filter> 
    <data android:host="com.myHost" android:scheme="content"/> 
</intent-filter> 

AND::私たちは2つの形式でデータを指定することができることを承知しています

<intent-filter> 
    <data android:scheme="content"/> 
    <data android:host="com.myHost"/> 
</intent-filter> 

しかし、私は

<intent-filter> 
     <data android:host="com.myHost" android:scheme="content"/> 
     <data android:scheme="content"/> 
     <data android:host="com.myHost1"/> 
</intent-filter> 

など、いくつかの組み合わせが存在することが知りたい:

<intent-filter> 
     <data android:host="com.myHost" android:scheme="content"/> 
     <data android:scheme="content"/> 
     <data android:host="com.myHost1"/> 
     <data android:scheme="content"/> 
     <data android:host="com.myHost2"/> 
</intent-filter> 

最後のケースでは、最初にこれが存在するかどうかを知る&スキーム&ホストを含​​むデータタグが任意の順序で出現できるので、どのスキームにどのホストを使用するかがどのように決定されるか。

助けてください。

+1

あなたのデータタグを2インテントフィルタを作成します。 Googleドキュメントのhttp://developer.android.com/guide/components/intents-filters.html 要素ではこれらの属性はそれぞれオプションですが、線形の依存関係があります。 スキームがない場合指定した場合、ホストは無視されます。 ホストが指定されていない場合、ポートは無視されます。 スキームとホストの両方が指定されていない場合、パスは無視されます。 – gleenn

答えて

10

私たちは、あなたが本当にあなたがContentProviderの支援で活動を作成していることを意味しない限り、スキームにcontentを使用しないでください二つの形式

内のデータを指定することができることを承知しています。

<activity 
     android:name=".activities.ShowOrCreateActivity" 
     android:theme="@android:style/Theme.Translucent.NoTitleBar"> 

     <intent-filter> 
      <action android:name="com.android.contacts.action.SHOW_OR_CREATE_CONTACT" /> 
      <category android:name="android.intent.category.DEFAULT" /> 
      <data android:scheme="mailto" /> 
      <data android:scheme="tel" /> 
     </intent-filter> 
    </activity> 

しかし、私はあなたのフィルタが<data>のためのちょうど一つの属性を持っている場合、いくつかの組み合わせが

として存在することができる知りたい、あなたは間違いなく、このような連絡先アプリから、このように異なる値を持つことができます

また、1つのコンポーネントは複数の要素を持つことができます。各要素は論理的に論理和をとっています(いずれのフィルタにも一致する要素はすべてコンポーネントと一致します)。したがって、より複雑なシナリオでは、<data>要素ごとに2つ以上の属性がある場合、それらを別々の<intent-filter>要素に配置する傾向があります。それはどのホストがどのスキーム

どれ一致が良いと考えられているために使用されることが決定された方法

。その内容について詳しくは、Intentをご覧ください。

+0

ありがとう!理想的には、アプリケーションが2つのコンテンツとホストの組み合わせを指定する必要がある場合、2つのインテントフィルタにそれらを配置する必要があります。 – AndroidGuy

+1

すべての場合に動作しません。アンドロイドのドキュメントでは、「注:インテントフィルタにはURIパターンの単一のデータ要素しか含まれていない可能性があります。 – htafoya

2

@CommonsWareの答えを補完すると、それほど具体的でない場合は、2つの<data>タグを使用できないようです。私が持つことができる私のアプリケーションの一つで

A):

<data android:scheme="myAppScheme1"/> 

B)と

<data android:scheme="myAppScheme2" android:host="host2"/> 

C)が、次はmyAppScheme1://whatever URIを使用して最初のタグには(動作しません無視します):

<data android:scheme="myAppScheme1"/> 
<data android:scheme="myAppScheme2" android:host="host2"/> 

D)ただし、私が最初の方式を補完すると、URIS:

<data android:scheme="myAppScheme1" android:host="host1"/> 
<data android:scheme="myAppScheme2" android:host="host2"/> 

おそらくあなたは本当にケースCが必要な場合)、あなたはより良い完全な方法によって無視されている指定されたホストだけで

関連する問題