0

最初は、私の英語が下手でごめんなさい!

私の問題は、ブロック SMS アプリケーションを作成していて、アプリで SMS を受信したいのですが、ブロードキャストを中止して、デフォルトの SMS アプリが SMS を受信できないようにするため、アプリの優先度を最高 (1000) に設定しましたが、アプリは、Android のデフォルトの SMS アプリの後もブロードキャストを受信します。

私の電話がSMSを受信したときに、Android電話のSMSのブロードキャスト受信信号をすべて順番に印刷します。システムSMSアプリは常に最初にSMSブロードキャストを受信し、優先度も最も高いことを認識しています。

では、SMS アプリがシステムのデフォルト SMS の前に SMS ブロードキャストを受信できるようにするにはどうすればよいですか?

私は本当にあなたの助けが必要です!

読んでくれてありがとう!

4

1 に答える 1

6

Google の文書によると、ブロードキャスト レシーバーの最大優先度は 1000 未満、文字通り 999 です。ただし、最大レベル 2147483647 に設定できます。Google Play の他のアプリはブロードキャスト レシーバーよりも高い優先度 (999 以上) を使用するため、これにより、アプリが SMS を受信できない場合があります。この最大レベルまで、アプリは常に最初に SMS を受信します。このようにして、デフォルトのメッセージング アプリの前にブロードキャストを取得できます。

この答えを見てください!


編集

私は StackOverflow で以前の回答を再検討していましたが、この回答は大雑把に見えました。以下はIntentFilter priorityの公式ドキュメントからの抜粋です。

フィルターによって記述されたタイプのインテントの処理に関して、親コンポーネントに与えられるべき優先度。この属性は、アクティビティとブロードキャスト レシーバの両方に意味があります。

  1. インテントに応答する可能性のある他のアクティビティと比較して、フィルターに一致するインテントにアクティビティがどの程度応答できるかについての情報を提供します。インテントが優先度の異なる複数のアクティビティによって処理される可能性がある場合、Android は優先度の値がより高いアクティビティのみをインテントの潜在的なターゲットと見なします。

  2. これは、ブロードキャスト メッセージを受信するためにブロードキャスト レシーバが実行される順序を制御します。優先度の値が高いものは、値が低いものより先に呼び出されます。(順序は同期メッセージにのみ適用されます。非同期メッセージでは無視されます。)

公式の下限と上限は、それぞれ -1000 と 1000 のままです。優先度の高いブロードキャスト レシーバーは、順序付けされたブロードキャストを中止できるため、優先度の低い他のレシーバーがそれらを受信できなくなります。

于 2013-09-22T04:32:29.707 に答える