2

現在、カスタム スキームのインテント フィルターを実行して、ブラウザーから自分のアプリを開きます。

代わりにアクティビティを開いてブロードキャストレシーバーを起動することは可能ですか?

アクティビティ ブロードキャスト レシーバーの現在のコードは次のようになります。

  <action android:name="android.intent.action.VIEW" >
            </action>

            <category android:name="android.intent.category.DEFAULT" >
            </category>
            <category android:name="android.intent.category.BROWSABLE" />

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

これが私の受信機コードです。トリガーしません。ビューアクションとカスタムアクションを試しました

 <receiver android:name="MyReceiver" >
            <intent-filter>
                <action android:name="com.dg.action.CONFIGURE" >
                </action>
                <category android:name="android.intent.category.DEFAULT" >
                </category>
                <data
                    android:host="shortener.com"
                    android:scheme="shortener" >
                </data>
            </intent-filter>
        </receiver>
4

1 に答える 1

10

私はこれが古いことを知っていますが、明確で受け入れられた答えがないので、ちょっと. 公式ドキュメントには次のように記載されています。

...インテント ブロードキャスト メカニズムは、Context.startActivity() でアクティビティを開始するために使用されるインテントとは完全に分離されています。BroadcastReceiver が startActivity() で使用されるインテントを表示またはキャプチャする方法はありません。同様に、インテントをブロードキャストすると、アクティビティを見つけたり開始したりすることはありません。これら 2 つの操作は意味的に大きく異なります。インテントを使用してアクティビティを開始することは、ユーザーが現在対話しているものを変更するフォアグラウンド操作です。インテントのブロードキャストは、ユーザーが通常認識していないバックグラウンド操作です。

出典: Android デベロッパー ドキュメント、BroadcastReceiver

それが明確になることを願っています。

于 2013-10-08T16:47:18.570 に答える