我正在尝试创建一个可以拨打和接听电话和短信的应用 传出部分效果很好。 我使用广播接收器来接听来电。 当我试图调试它时,它不会在来电时加入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");
}
}
}
有什么问题? 是否还有其他方式来表达呼叫接收者?
答案 0 :(得分:0)
更改接收者的名称以匹配您在清单文件中定义的名称。
<receiver android:name=".CallBroadcastReceiver"
android:exported="true">
答案 1 :(得分: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);
答案 2 :(得分:0)
在清单文件中添加以下权限。
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>