我有一个要求,其中我想检测两种Android中检测呼出和通话挂机事件的Android
- 每当呼出由与呼叫无关的事件,我的应用程序应该知道这与被叫号码
- 当电话挂了(由于成功/失败)一起,我的应用程序应该知道这与挂断
的原因沿着这是可能的Android中?
我有一个要求,其中我想检测两种Android中检测呼出和通话挂机事件的Android
的原因沿着这是可能的Android中?
你应该创建一个BroadcastReceiver:
public class CallReciever extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_RINGING)) {
// Phone number
String incomingNumber = intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER);
// Ringing state
// This code will execute when the phone has an incoming call
} else if (intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_IDLE)
|| intent.getStringExtra(TelephonyManager.EXTRA_STATE).equals(
TelephonyManager.EXTRA_STATE_OFFHOOK)) {
// This code will execute when the call is answered or disconnected
}
}
}
你应该注册你一个pplication听清单中的这些意图:
<receiver android:name=".CallReciever" >
<intent-filter>
<action android:name="android.intent.action.PHONE_STATE" />
</intent-filter>
</receiver>
你需要创建一个接收器用于以下目的的行动:
你能不能给我一个例子,我对呼出 – 2012-12-24 11:47:01
需要上述解决方案完美地工作了me.But接收器接收相同的状态多次。我们如何解决这个问题?无论如何检测接收意图的ID或其他方式? – 2015-10-09 11:47:48
有只使用TelephonyManager和 PhoneStateListener.You鸵鸟政策甚至要注册一个BroadcastReceiver一个简单的解决方案。
public class MyPhoneStateListener extends PhoneStateListener {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
//Hangup
case TelephonyManager.CALL_STATE_IDLE:
break;
//Outgoing
case TelephonyManager.CALL_STATE_OFFHOOK:
break;
//Incoming
case TelephonyManager.CALL_STATE_RINGING:
break;
}
}
}
并注册它:
public static void registerListener(Context context) {
((TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE)).listen(new MyPhoneStateListener(),
PhoneStateListener.LISTEN_CALL_STATE);
}
这不适用于拨出电话。 – ralphgabb 2015-07-30 01:35:41
感谢您的举报代码 有没有一种方法来捕获传出呼叫,以及类似于捕获来电的方式? – user669231 2011-03-31 10:41:13
@ user669231是的,您应该更改if-state中的支票。你可以看到这个主题:http://stackoverflow.com/questions/2668445/detect-outgoing-calls-and-problem-with-a-real-device – vendor 2011-03-31 10:59:01
工程就像一个魅力。此外,您必须在manifest.xml文件中声明以下权限: <使用权限android:name =“android.permission.READ_PHONE_STATE”/> 否则,这将不起作用。 见TelephonyManager类的API: http://developer.android.com/reference/android/telephony/TelephonyManager.html – qupera 2014-10-08 09:19:15