3

電話がかかってきたら、アプリケーションで何らかの操作(ゲームの一時停止)を実行したい。しかし、電話の状態を読み取ることは機能していません。マニフェストでパーミッション(READ_PHONE_STATE)を付与しました。電話がかかってきても何も起こりません。ありがとう。

TelephonyManager telephonyManager;
PhoneStateListener listener;
telephonyManager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
*
*
*
listener = new PhoneStateListener() {
        @Override
        public void onCallStateChanged(int state, String incomingNumber) {

        switch (state) {
        case TelephonyManager.CALL_STATE_IDLE:
            Toast.makeText(SudokuGameActivity.this, "IDLE", Toast.LENGTH_SHORT).show();
          break;
        case TelephonyManager.CALL_STATE_OFFHOOK:
         Toast.makeText(SudokuGameActivity.this, "OFF Hook", Toast.LENGTH_SHORT).show();
          break;
        case TelephonyManager.CALL_STATE_RINGING:
            Toast.makeText(SudokuGameActivity.this, "Ringing", Toast.LENGTH_SHORT).show();
            mpauseButton.performClick();
          break;
          }

        }
       };
4

2 に答える 2

3

次の行を書きましたか:

 telephonyManager.listen(listener,PhoneStateListener.LISTEN_CALL_STATE);
于 2012-01-05T09:28:57.757 に答える
1

リスナーが作成されたら、リッスンするために `public void listen(PhoneStateListener listener、int events)'を呼び出す必要があります。

また、これを試すことができます:アクションを処理するbroadcatstレシーバーを作成しますandroid.intent.action.PHONE_STATE

コード例:

public class PhoneStateReceiver extends BroadcastReceiver {

private TelephonyManager manager;

@Override
public void onReceive(Context context, Intent intent) {
    if (manager == null) {
        manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    }
    String action = intent.getAction();
    System.out.println(action);
    System.out.println("current phone state:" + manager.getCallState());
}

}

于 2012-01-05T09:26:59.937 に答える