0

マニフェストの内容は次のとおりです(これは内部にあります

<receiver android:name=".MediaButtonIntentReceiver">
<intent-filter android:priority="2147483647">
    <action android:name="android.intent.action.MEDIA_BUTTON" />
</intent-filter>
        </receiver>

主な活動

private MediaButtonIntentReceiver receiver = new MediaButtonIntentReceiver();

onCreate(Bundle savedInstanceState){
..
IntentFilter filter = new IntentFilter(Intent.ACTION_MEDIA_BUTTON);
        filter.setPriority(1000);
        registerReceiver(receiver,filter);
..
}

これは MediaButtonIntentReceiver.class です

public class MediaButtonIntentReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) 


{

KeyEvent v_Event = (KeyEvent)intent.getParcelableExtra(Intent.EXTRA_KEY_EVENT);
if (v_Event == null) {
    return;
}
int v_Action = v_Event.getAction();
if (v_Action == KeyEvent.ACTION_DOWN) {
// do something
    Toast.makeText(context, "BUTTON PRESSED!", Toast.LENGTH_SHORT).show(); 
    }
    abortBroadcast();
}

何らかの理由で、アプリケーションを起動してヘッドセット ボタンをクリックすると、トースト メッセージが表示されません。しかし、音楽が再生され始めます。私は自分が何をしているのかを検索しようとしましたが、運がありません。

4

1 に答える 1

0

それが違いを生むかどうかは100%確信が持てませんが、受信者の宣言には「。」があります。関数名の前に、受信者を登録したときはいつでも、そこにそれがなく、正常に機能しました。

BroacastReceiverコードがどこまで進んでいるか知っていますか? たとえばv_Event、null になる可能性がありますか? またはv_Actionは間違いありKeyEvent.ACTIONDOWNませんか?

于 2013-08-06T15:03:24.437 に答える