【发布时间】:2012-06-06 02:23:11
【问题描述】:
我正在尝试开发类似于 AutoAnswer 的东西,但它也会在通知广播接收器时自动挂断。我整天都在阅读有关此问题的其他 stackoverflow 问题,似乎权限 MODIFY_PHONE_STATE 仅限于系统应用程序,但是,有些帖子说使用 endCall();不需要此权限。
我的问题分为两部分:
-
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 块中添加一些调试输出。
-
希望对您有所帮助.. stackoverflow.com/questions/10860369/…
-
先了解一下logcat。然后想想你为什么要挂断用户的电话——这很少是一件合适的事情。