Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何在Monodroid中结束来电?_C#_Android_Xamarin.android_Phone Call_Telephonymanager - Fatal编程技术网

C# 如何在Monodroid中结束来电?

C# 如何在Monodroid中结束来电?,c#,android,xamarin.android,phone-call,telephonymanager,C#,Android,Xamarin.android,Phone Call,Telephonymanager,Java开发人员在2.3之前一直使用反射来达到ITelephony的endcall方法,以结束传入调用,但这种方法后来被阻止,因此在monodroid中也无法通过c#访问 在“Android版Mono”中有没有办法做到这一点 Java开发人员使用了反射 这是一样的,只是不同:您使用的是Java反射,而不是Java反射 假设您要移植此端口: 如果你斜视得恰到好处,你可以得到这个(完全未经测试的!)C代码: Java开发人员使用了反射 这是一样的,只是不同:您使用的是Java反射,而不是Java反射

Java开发人员在2.3之前一直使用反射来达到ITelephony的endcall方法,以结束传入调用,但这种方法后来被阻止,因此在monodroid中也无法通过c#访问

在“Android版Mono”中有没有办法做到这一点

Java开发人员使用了反射

这是一样的,只是不同:您使用的是Java反射,而不是Java反射

假设您要移植此端口:

如果你斜视得恰到好处,你可以得到这个(完全未经测试的!)C代码:

Java开发人员使用了反射

这是一样的,只是不同:您使用的是Java反射,而不是Java反射

假设您要移植此端口:

如果你斜视得恰到好处,你可以得到这个(完全未经测试的!)C代码:


谢谢你,在问了这个问题之后,我终于开始研究JNIEnv了,但是我没有打电话给getITelephony,当我看到你的答案时,我想这就是为什么我不能访问endCall。。。不幸的是,它仍然为endcall行提供“没有这样的方法错误”。。。致以最诚挚的问候。我还添加了AndroidJavaSource。。。没有帮助Neither哦好吧。。。知道了。。。问题在于类型引用。endCall是()Z而不是(V)Z,而且我们必须使用CallBooleanMethod…已尝试且正确。。。编辑了一下你的答案,现在它可以工作了,非常感谢你,你猜不出这是一个多么大的帮助!我的权限被拒绝了。有人能帮忙吗?谢谢,我在问这个问题之后,最后一次在JNINEV上工作,但是我没有打电话给getITelephony,当我看到你的答案时,我想这就是为什么我不能访问endCall。。。不幸的是,它仍然为endcall行提供“没有这样的方法错误”。。。致以最诚挚的问候。我还添加了AndroidJavaSource。。。没有帮助Neither哦好吧。。。知道了。。。问题在于类型引用。endCall是()Z而不是(V)Z,而且我们必须使用CallBooleanMethod…已尝试且正确。。。编辑了一下你的答案,现在它可以工作了,非常感谢你,你猜不出这是一个多么大的帮助!我的权限被拒绝了。有人能帮忙吗?
try {
    TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
    Class c = Class.forName(manager.getClass().getName());
    Method m = c.getDeclaredMethod("getITelephony");
    m.setAccessible(true);
    ITelephony telephony = (ITelephony)m.invoke(manager);
    telephony.endCall();
} catch(Exception e){
    Log.d("",e.getMessage());
}
var manager = (TelephonyManager) this.GetSystemService (Context.TelephonyService); 

IntPtr TelephonyManager_getITelephony = JNIEnv.GetMethodID (
        manager.Class.Handle,
        "getITelephony",
        "()Lcom/android/internal/telephony/ITelephony;");

IntPtr telephony          = JNIEnv.CallObjectMethod (manager.Handle, TelephonyManager_getITelephony);
IntPtr ITelephony_class   = JNIEnv.GetObjectClass (telephony);
IntPtr ITelephony_endCall = JNIEnv.GetMethodID (
        ITelephony_class,
        "endCall",
        "()Z");
JNIEnv.CallBooleanMethod (telephony, ITelephony_endCall);
JNIEnv.DeleteLocalRef (telephony);
JNIEnv.DeleteLocalRef (ITelephony_class);