c# - 无法使用 Xamarin 在 Android 中阻止拨出电话
问题描述
我正在尝试构建一个应用程序,根据被叫号码终止拨出电话。我有适用于来电的代码,但不适用于拨出:
if (Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.P)
{
TelephonyManager mng = (TelephonyManager)(context.GetSystemService(Context.TelephonyService));
IntPtr iTelephonyPtr = JNIEnv.GetMethodID(mng.Class.Handle, "getITelephony", "()Lcom/android/internal/telephony/ITelephony;");
IntPtr telephony = JNIEnv.CallObjectMethod(mng.Handle, iTelephonyPtr);
IntPtr iTelephonyClass = JNIEnv.GetObjectClass(telephony);
IntPtr iTelephonyEndCall = JNIEnv.GetMethodID(iTelephonyClass, "endCall", "()Z");
JNIEnv.CallBooleanMethod(telephony, iTelephonyEndCall);
JNIEnv.DeleteLocalRef(telephony);
JNIEnv.DeleteLocalRef(iTelephonyClass);
}
else
{
TelecomManager telecomManager = (TelecomManager)context.GetSystemService(Context.TelecomService);
telecomManager.EndCall();
}
我在互联网上一无所获。
解决方案
您需要android.intent.action.NEW_OUTGOING_CALL
在应用程序清单中为意图注册 Activity,然后在拨出呼叫时处理该意图。
我不知道你是否可以在 c# 中完成这一切。如果您可以接收到意图,您应该能够获得用于拨打电话的意图,然后确定如何停止正在进行的通话。
这里有一个java only question and answer ,但它已经很老了,我不知道它是否仍然适用于现代android版本。(P 及以上)
那里的答案建议调用setResultData(null);
处理程序,将数字替换为 null,从而取消调用。我不知道这是否可以从 xamarin 内部实现。
推荐阅读
- excel - 如何将 Vlookup 公式应用于多行
- wordpress - 如何为 WordPress 上的所有页面添加 HTML 标签?
- nginx - 通过 kubernetes nginx 连接到 gRPC 服务
- angular - 在画布上初始绘制后无法绘制'fillRect' - Angular2 +
- c - 矩阵计算器错误 - 无法正常工作
- uwp - 导航到页面后执行命令(ReactiveUI,UWP)
- c# - 如何拦截和修改批量更新?
- dart - 断言失败:'userRepository != null':不正确
- sqlite - 我可以从android应用程序中提取数据库吗?
- machine-learning - SVM 的数据应该被缩放、标准化还是两者兼而有之