我正在尝试开发类似于 AutoAnswer 的东西,但它也会在通知广播接收器时自动挂断。我整天都在阅读有关此问题的其他 stackoverflow 问题,似乎权限MODIFY_PHONE_STATE
仅限于系统应用程序,但是,有些帖子说使用 endCall(); 不需要此权限。
我的问题有两个部分:
endCall()
还能用吗?自 Android 2.3 以来,它是否曾在任何地方使用过?- 如果是,我需要帮助使它工作,因为现在它不工作。我
ITelephony.aidl
从http://code.google.com/p/autoanswer/source/browse/trunk/src/com/#com/android/internal/telephony下载 并将其放入一个包中。我是新用户,不能发图片。
这是我的文件树在 netbeans 中的样子:
这是在我的广播接收器中运行的代码。之前已在此处多次发布此问题的解决方案,但我仍然无法使其正常工作:/
ITelephony telephonyService;
TelephonyManager telephony = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
try {
Class c = Class.forName(telephony.getClass().getName());
Method m = c.getDeclaredMethod("getITelephony");
m.setAccessible(true);
telephonyService = (ITelephony) m.invoke(telephony);
telephonyService.endCall();
}
catch (Exception e) {
//TODO: some exception handling
}
查看日志,我看到了这个错误:
[PhoneIntfMgr] CMD_END_CALL: no call to hang up
编辑:我是 android 开发的新手,似乎找不到 android 应用程序的控制台输出——比如调用 e.printStackTrace() 但我确实让 Toast 在 catch 块内显示一些文本,如下所示:
catch (Exception e) {
Toast toast = Toast.makeText(context, "IN CATCH BLOCK ", Toast.LENGTH_LONG);
toast.show();
e.printStackTrace();
}
但是屏幕上什么都没有显示。。