我正在尝试开发类似于AutoAnswer的东西,但它也会在通知广播接收器时自动挂断。我已经花了整整一天阅读关于这个问题的其他stackoverflow问题,似乎许可MODIFY_PHONE_STATE
仅限于系统应用程序,但是,一些职位表示,使用endCall();不需要此权限。有没有什么办法可以在Android 2.3后结束通话?
我的问题有两个部分:
- 是
endCall()
仍然可用?自从Android 2.3以来它有没有在任何情况下使用过? - 如果是这样,我需要帮助使它工作,因为现在它不工作。我从http://code.google.com/p/autoanswer/source/browse/trunk/src/com/#com/android/internal/telephony 下载
ITelephony.aidl
并将其放入包装中。我是新用户,因此我无法发布图片。
这是我的文件树看起来像在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();
}
但没有显示在屏幕上..
随着代码的状态,您无法判断是否抛出了异常。也许开始你应该添加一些调试输出到你的catch块。 – Paulpro
希望它有助于.. http://stackoverflow.com/questions/10860369/fetch-dial-number-while-calling –
首先了解logcat。然后想想为什么你想把用户的手机挂在他们身上 - 这很少是合适的事情。 –