0

我正在尝试制作一个可以拨打和接听电话和短信的应用程序 传出部分效果很好。我使用广播接收器来接听来电。当我尝试调试它时,它不会在来电时加入 onReceive 函数。

这是我们的 manifest.xml

    <receiver android:name=".MYPhoneStateListener"
       android:exported="true">
    <intent-filter android:priority="999999"> 
        <action android:name="android.intent.action.PHONE_STATE"></action> 
    </intent-filter> 

</receiver> 

</application>

<uses-permission android:name="android.permission.CALL_PHONE" />
<uses-permission android:name="android.permission.SEND_SMS" />    

这是广播接收器:

    public class CallBroadcastReceiver extends BroadcastReceiver{

@Override
public void onReceive(Context context, Intent intent) {
    // TODO Auto-generated method stub
    String state = intent.getStringExtra(TelephonyManager.EXTRA_STATE);

    if (TelephonyManager.EXTRA_STATE_RINGING.equals(state)) 
    {
        Log.d("incoming", "incoming");
    }
}

}

问题是什么?有没有其他方法来暗示呼叫接收者?

4

3 回答 3

0

更改接收方的名称以匹配您在清单文件中定义的名称。

<receiver android:name=".CallBroadcastReceiver"
       android:exported="true">
于 2012-09-13T14:25:07.753 回答
0

您可以尝试实现您的电话监听器,例如:

public class PhoneListener extends PhoneStateListener {

    @Override
public void onCallStateChanged(int state, String incomingNumber) {
    }

}

状态可以是:TelephonyManager.CALL_STATE_RINGING、TelephonyManager.CALL_STATE_OFFHOOK、TelephonyManager.CALL_STATE_IDLE

在广播接收器中注册监听器:

TelephonyManager telephony = (TelephonyManager)    ctx.getSystemService(Context.TELEPHONY_SERVICE);
        telephony.listen(phoneListener, PhoneStateListener.LISTEN_CALL_STATE);
于 2012-09-13T14:39:03.317 回答
0

在清单文件中添加以下权限。

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
于 2013-01-08T13:02:16.640 回答