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

你需要听众做什么?每当电话状态发生变化时,您的接收器就会被呼叫。

这是一篇关于如何使用广播接收器的好文章。

从这篇文章:

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 回答