【发布时间】:2015-03-01 13:13:08
【问题描述】:
我只想知道如何在android dev中取消拨出电话?有没有可能用最简单的编码方式?
【问题讨论】:
我只想知道如何在android dev中取消拨出电话?有没有可能用最简单的编码方式?
【问题讨论】:
您需要创建一个BroadCastReceiver 将在操作上调用:NEW_OUTGOING_CALL
Java 类:
public class CallReceiver extends BroadcastReceiver {
@Override
public void onReceive(final Context context, final Intent intent) {
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
setResultData(null);
abortBroadcast(); // cancel the call
}
}
}
清单声明
编辑 不要忘记添加外出许可
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
<receiver android:name=".CallReceiver" >
<intent-filter android:priority="2147483647" >
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
</receiver>
使用此代码,任何通话都将被取消,如果此应用在您的手机上,您将无法拨打电话
【讨论】:
abortBroadcast() 我猜也无济于事,因为它只设置了指示该接收器应该中止当前广播的标志。没办法它应该“取消”调用
1.创建一个优先级为0的BroadcastReceiver。
<receiver android:name=".YourReceiver" >
<intent-filter android:priority="0" >
<action android:name="android.intent.action.NEW_OUTGOING_CALL" />
</intent-filter>
2.在BroadcastReceiver中拦截其onReceive方法中的ACTION_NEW_OUTGOING_CALL意图
public void onReceive(final Context context, final Intent intent) {
if (intent.getAction().equals(Intent.ACTION_NEW_OUTGOING_CALL)){
setResultData(null);
}
}
3.在onReceive中调用setResultData(null)如上代码/方法所示
在 AndroidManifest.xml 文件中添加以下权限
<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS" />
【讨论】: