2011-05-04 205 views

回答

3

是你可以....扩展广播接收器和覆盖的onReceive为以下

public class CallListener extends BroadcastReceiver { 

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

     if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)) { 
      String phoneNumber = intent.getExtras().getString(Intent.EXTRA_PHONE_NUMBER); 
      System.out.println(phoneNumber); 

      if (phoneNumber != null&& CallService.phoneNumber.equals("ANY_NUMBER_YOU_WANNA_INTERCEPT_ON")) { 

       //do what you want to do :) 
      } 
     } 

    } 

,你将需要添加您的广播接收器在AndroidManifest.xml中,如下所示

<receiver android:name=".CallListener" android:permission="android.permission.PROCESS_OUTGOING_CALLS"> 
     <intent-filter> 
      <action android:name="android.intent.action.NEW_OUTGOING_CALL" /> 
     </intent-filter> 
</receiver> 
1

您可以使用PhoneStateListener自定义broadcast receiver,它可以让您onCallStateChanged(int state, String incomingNumber)

(你还需要<uses-permission android:name="android.permission.READ_PHONE_STATE" />在AndroidManifest。)

+0

感谢Ben Williams,我想在用户拨打电话时获取号码。拨打电话的号码。 – shebelaw 2011-05-04 14:49:27

+0

我不确定你可以直接使用,但是如果你正在监听电话状态变化,你应该能够告诉呼叫何时结束,然后立即调用'CallLog.Calls'和'getLastOutgoingCall'给你上次被叫号码。 – 2011-05-04 14:59:55

+0

坦克。我会看看这个。但我真正想要的是在呼叫处于活动状态或呼叫按钮被选中时获取号码。 – shebelaw 2011-05-04 16:54:52