8

ACTION_MEDIA_BUTTON ハンドラーを使用してアプリケーションを実行していますが、MX Player または Apollo によって常にインターセプトされているようで、インテントが得られません。

タグに1000と2147483647の両方の優先度を設定し、setPriorityを使用してコンストラクターの直後に試しました

MX Player または Apollo が存在しない場合にアプリケーションが動作する

また、Google Play の Headset Interceptor アプリを使用してみました。Autostarts アプリケーションを使用して MX Player へのイベントを拒否しようとしましたが、何も役に立ちません。

onCreateで:

IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
filter.addAction(Intent.ACTION_HEADSET_PLUG);
filter.setPriority(1000);
registerReceiver(receiver, filter);

受信機で

@Override
public void onReceive(Context context, Intent intent) {
    if (Intent.ACTION_MEDIA_BUTTON.equals(intent.getAction())) {
        // NEVER REACHES HERE WHEN MX PLAYER PRESENT. WORKS IF NOT

マニフェストで

<receiver
    android:name="BCreceiver"
    android:enabled="true">
    <intent-filter android:priority="1000">
        <action android:name="android.intent.action.MEDIA_BUTTON" />
        <action android:name="android.intent.action.HEADSET_PLUG" />
    </intent-filter>
</receiver>
4

4 に答える 4

15

以下のリンクの「The value must be greater than -1000 and less than 1000.」行を参照してください。最高の優先度は 1000 ではなく 999 です。

http://developer.android.com/guide/topics/manifest/intent-filter-element.html

于 2014-12-26T06:47:26.150 に答える