2012-03-06 2 views
7

私は問題があります。 IAMが私のアプリケーションへのリンクをインターチェンジ

<intent-filter> 
    <action android:name="android.intent.action.VIEW"/> 
    <category android:name="android.intent.category.DEFAULT"/> 
    <category android:name="android.intent.category.BROWSABLE"/> 
    <data android:scheme="http" android:host="twitter.com"/> 
    <data android:scheme="http" android:host="facebook.com"/> 
</intent-filter> 

として私のアプリへのリンクをinteruptするために、次のコードを使用して、しかし、問題は、私はつまり、私は、実行時にホストを追加または削除することができ、実行時にデータ・スキームとホストを設定する必要があるということです。 SO誰かがコードの下に使用していますが、それは厳密に言えば

IntentFilter filter = new IntentFilter(); 
filter.addAction("android.intent.action.VIEW"); 
filter.addCategory("android.intent.category.DEFAULT"); 
filter.addCategory("android.intent.category.BROWSABLE"); 
filter.addDataScheme("http"); 
filter.addDataAuthority("www.facebook.com", null); 
RecieveBroadcaster receiver = new RecieveBroadcaster(); 
registerReceiver(receiver, filter); 
+0

誰でも助けてください – saba

+0

私はこれの答えを得ています。だれかが助けを必要とするならば。 ACTION.VIEWはアクティビティアクションです。したがって、それを放送受信機に登録することはできません。 intent-filterは実行時に設定できません(ブロードキャスト受信機の場合を除く)。また、放送受信者はandroid.intent.action.PHONE_STATEのようなブロードキャストアクションのみを中継することができます。したがって、ACTION> VIEWの登録は許可されておらず、放送受信者は決してそれに応答しません。 – saba

答えて

4

が動作していないruntime.Iでデータスキームとホストの値を設定することで私を助けてください、ACTION_VIEWに対応する文字列は、慣例により、活動アクションある ; activityという要素のintent-filterに配置すると、のアクティビティアクションになります。システムは、アプリケーションのためにこれらをリッスンします。これは基本的に、自分で聞くことができない(できない)理由です。 Context.startActivity()メソッドは、Intentを生成します。

インテント解決のルールは、特定のIntentが実際にIntentFilterと一致するかどうかを判断します。アクティビティインテントの場合、複数の一致があり、通常は「セレクタ」インタフェースを表示するので、ユーザはターゲットを選択できます。

Intent「ストリーム」が交差しない3つあります:startActivity(),およびstartService()です。これらはすべてContextの方法で開始され、それぞれ特定のターゲットActivity,BroadcastReceiverおよびServiceを持っています。

(あなたも、そのコードを試してみたのですか?ないReceiveBroadcasterBroadcastReceiverを設定することは簡単なことで興味のあるイベントを取得し、次にあなたが欲しいIntentContext.startActivity()を使用します。カスタムアクションを使用することもできるので、ユーザーではなくレシーバーによってトリガーされたことがわかります。

唯一の質問は次のとおりです。受信可能なブロードキャストイベントはありますか?あなたが登録できるシステムイベントがあるか、Context.sendBroadcast()を介して自分でカスタムイベントを生成することができます。

アクティビティが開始されたときに受信した「Intent」を確認し、同じものを「転送する」か、探しているものと正確に一致しない場合はIntentを修正することができます。あなたが正しく決定したら、アクティビティのセットを動的に変更することはできません。したがって、すべてのリクエストのホストを調べなければなりません。

マニフェストにも受信者を登録し、その実装がシステムによって自動的に呼び出されることを忘れないでください。

関連する問題