64

Facebook の Messenger は、マニフェストで宣言され2147483647ているブロードキャスト レシーバーの優先度が です。android.provider.Telephony.SMS_RECEIVED

(他のアプリが独自のルールを作成しているため、最大優先度が 1000 であるというドキュメントの基準に従わざるを得ないのは悲しいことです)

私の優先度も途方もなく高いレベルに設定されている場合、2147483647「関係」よりも優先されるように、最初にアプリをインストールする必要があることを理解しています. 問題ありません。アプリが正常に機能するためには、アンインストールしてから再インストールする必要があると思われるアプリをユーザーに警告する画面を作成しました。

しかし、ここに問題があります。すべて正常に動作しますが、電話が再起動するとすぐに、「メッセンジャー」がアプリよりも優先され始めます。彼らがこの黒魔術をどのように行うことができるかを見るために、私はいたるところを見てきました. 彼らはどのようにこれを行うのですか?アプリが最初にインストールされたときに、再起動後に優先順位を取得するにはどうすればよいですか?

これまでに頭に浮かんだ唯一のことは、ブロードキャスト レシーバーを登録するときに、起動時にパッケージ名がアルファベット順に並べられることです。

コム。フェイスブック > com. sトライクフォースゼロ

放送受信機を登録しようとしましandroid.intent.action.BOOT_COMPLETEDたが、うまくいかない気がします。

メッセンジャーには、別の「優先度の低いブロードキャスト レシーバー」もありますandroid.provider.Telephony.SMS_RECEIVED-1

4

4 に答える 4

2

私の疑いは、最初にインストールされたアプリではなく、最初に実行されたアプリによって関係が壊れているということです。アプリケーションを手動でインストールおよびアンインストールする場合は、実行順序を手動で制御します。その後、再起動すると、実行順序は Android の起動動作に委ねられます。これがアルファベット順に発生するかどうかをテストするのは簡単です。簡単なテスト アプリ名 aaa を作成し、再起動後に優先度が維持されるかどうかを確認します。起動順序がアルファベット順に変わらない場合は、コメントしてください。起動順序がどのように設定されているかを調べます。

于 2013-06-13T20:37:15.610 に答える
1

マニフェストに入れていると思われる数字が実際の数字ではないため、これは Android メカニズムのバグを明らかにします。2147483647 は実際には (-1) で、2^31 です。どのアプリケーションを最初にインストールしたかが問題だと思うのはなぜですか?

于 2013-05-13T21:30:34.537 に答える