我的应用程序中有一个显示联系人列表的listfield。我想要在用户按下绿色呼叫按钮时呼叫选定的联系人(而不是启动电话呼叫日志应用程序的默认行为)。
这意味着有两个问题: 1)我可以拦截绿色的呼叫按钮吗? 2)我如何在应用程序中进行呼叫?
发布于 2011-06-06 20:15:58
在回答问题之前,假设您正在跟踪列表中当前选定的项目,并且您有一种查找相关电话号码的方法。
1) 截取呼叫按钮
您需要在管理器或屏幕中实现keyDown(int, int)方法,捕获正确的键代码,并返回true:
protected boolean keyDown(int keycode, int time)
{
// check for the green phone button
if (keycode == 1114112)
{
/*
* Place your custom calling code here.
*/
return true; // indicates that this method has consumed the keypress
}
else
{
return super.keyDown(keycode, time);
}
}(基于http://supportforums.blackberry.com/t5/Java-Development/Can-Over-ride-Call-Button-using-api-Issue-Shows-Context-Menu-on/m-p/252554/highlight/true#M41073给出的答案)
2) 打电话
您需要对电话应用程序执行Invoke()操作,将您希望呼叫的电话号码传递给它:
PhoneArguments callArgs = new PhoneArguments(
PhoneArguments.ARG_CALL, "+27 83 111 1234");
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, callArgs);
因此,组合得到以下代码:
protected boolean keyDown(int keycode, int time)
{
// check for the green phone button
if (keycode == 1114112)
{
// get phone number - you must write this yourself
String number = selectedContact.getNumber(); // assume some method here depending on your solution
// make the call
PhoneArguments callArgs = new PhoneArguments(
PhoneArguments.ARG_CALL, number);
Invoke.invokeApplication(Invoke.APP_TYPE_PHONE, callArgs);
// indicate that the key has been processed
return true;
}
else
{
return super.keyDown(keycode, time);
}
}发布于 2011-01-28 05:02:12
来自Blackberry文档:
net.rim.blackberry.api.phone
公共最终类Phone扩展对象
该类提供了以下功能:
*用于与电话交互的高级实用程序
应用程序。您可以使用此类中的方法对电话应用程序进行更精细的操作。例如,将DTMF铃声插入活动呼叫。*访问设备上的多条线路。*将数据添加到来电和活动呼叫屏幕(如果支持)。
多行示例
示例A:交换线路
公共类MultiLineAction将MultiLineListener
Phone.addPhoneListener(this);
public void setPreferredLineFailure(int lineId) {_screen.popupMessage(“切换失败”);} public void setPreferredLineSuccess(int lineId) {_screen.popupMessage(“切换到”+ Phone.getLineNumber(lineId) +“完成”);}
Phone.setPreferredLine( Phone.getLineIds());
示例B:发起去电
在应用程序关闭之前,从电话侦听器"5195550123");
Phone.removePhoneListener(this);
Category: Signed:只有签名的应用程序才能访问此元素。如果您打算使用此元素,请访问http://www.blackberry.com/go/codesigning以获取一组代码签名密钥。只有在BlackBerry智能手机上运行的应用程序才需要代码签名;在BlackBerry智能手机模拟器上的开发可以在没有代码签名的情况下进行。自: BlackBerry API 4.0.0
http://www.blackberry.com/developers/docs/6.0.0api/
https://stackoverflow.com/questions/4755983
复制相似问题