5

着信コールの詳細 ( Number,Name,Date) を取得しています。しかし、発信通話の詳細を取得する方法。発信通話の詳細のコードを作成しましたが、スローされNullPointerExceptionます。以下は私のMyCallReceiver.javaファイルとマニフェストファイルです

  public void onReceive(Context context, Intent intent) {

    this.context = context;



    if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_RINGING)) {

        String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);

        Toast.makeText(context, "Call From : " + incomingNumber, Toast.LENGTH_LONG).show();

        doToast(getContactName(context, incomingNumber) + " " + incomingNumber);
        String currentDateTimeString = DateFormat.getDateTimeInstance().format(new Date());
        doToast(currentDateTimeString +" "+incomingNumber);


    } else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_IDLE) || intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(TelephonyManager.EXTRA_STATE_OFFHOOK)) {
        Toast.makeText(context, "DETECTED CALL HANG UP EVENT", Toast.LENGTH_LONG).show();

        String outgoingNumber=intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER);
        Toast.makeText(context,"Calling To :"+outgoingNumber,Toast.LENGTH_LONG).show();
    }
 }
4

3 に答える 3

1

まず、intent.getStringExtra(Intent.EXTRA_PHONE_NUMBER) は、電話の状態がアイドル状態のときに発信番号を提供し、電話の状態が OFF_HOOK に変わると「null」に変わります。

最も簡単な方法は、別の onRecive が発生する前に番号を保存することでした。

于 2015-09-22T12:42:51.627 に答える