0

アプリケーションを作成していますが、コードの特定の部分で、電話を受けたときに通知を作成する必要があります。問題は、電話をかけてきた人の番号を渡さなければならないため、通知を実装できないことです。私のコードの次の部分。

私の受信者:

@Override
public void onReceive(Context context, Intent intent) {
    TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    CallIntercepterListener callIntercepterListener = new CallIntercepterListener();

    telephonyManager.listen(callIntercepterListener, PhoneStateListener.LISTEN_CALL_STATE);

    Bundle bundle = intent.getExtras();
    String phoneNumber = bundle.getString("incoming_number");
    Log.d(TAG, "phoneNumber: " + phoneNumber);
}

と私のリスナー:

@Override
public void onCallStateChanged(int state, String incomingNumber) {
    Log.v(TAG, "Event Call: " + incomingNumber);

    switch (state) {
        case TelephonyManager.CALL_STATE_RINGING:
            // Create a notification with de incomingNumber
            break;
    }
}
4

1 に答える 1

1

リスナーは何のために必要ですか?電話の状態が変化するたびに、受信機はすでに呼び出されています。

BroadcastReceiverの使い方についての素晴らしい記事があります。

この記事から:

package de.vogella.android.receiver.phone;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.TelephonyManager;
import android.util.Log;

public class MyPhoneReceiver extends BroadcastReceiver {

  @Override
  public void onReceive(Context context, Intent intent) {
    Bundle extras = intent.getExtras();
    if (extras != null) {
      String state = extras.getString(TelephonyManager.EXTRA_STATE);
      Log.w("DEBUG", state);
      if (state.equals(TelephonyManager.EXTRA_STATE_RINGING)) {
        String phoneNumber = extras
            .getString(TelephonyManager.EXTRA_INCOMING_NUMBER);
        Log.w("DEBUG", phoneNumber);
      }
    }
  }
}
于 2013-02-28T23:52:27.157 に答える