gpt4 book ai didi

java - 将 Location API 与 LBS JSR-179 和 JSR-179 Extended 一起使用时城市名称的空指针异常

转载 作者:行者123 更新时间:2023-11-29 09:10:31 30 4
gpt4 key购买 nike

我是 BlackBerry OS 开发的新手,我的代码试图在传递 Criteria 参数后使用 LocationProvider 获取城市名称。我是根据这个 link 关注的我从 RIM 本身尝试了“JSR-179”和“JSR-179 扩展”我的代码如下:

“使用 JSR 179”

public String CurrentLocation() 
{
try
{
//LBS(Location Based Service) JSR-179
Criteria criteria = new Criteria();
criteria.isAddressInfoRequired();
criteria.setCostAllowed(false);
criteria.setAddressInfoRequired(true);
criteria.setHorizontalAccuracy(200);
criteria.setVerticalAccuracy(200);

locationProvider = LocationProvider.getInstance(criteria);

location = locationProvider.getLocation(10);
cityName = location.getAddressInfo().getField(AddressInfo.CITY);
}
catch (LocationException le)
{
new Tracer("CurrentLocation() caught LocationException : " + le.getMessage());
le.printStackTrace();
}
catch (InterruptedException ire)
{
new Tracer("CurrentLocation() caught InterruptedException: " + ire.getMessage());
ire.printStackTrace();
}
return cityName;
}

使用 JSR-179 扩展

public String CurrentLocaiton(){
try
{
BlackBerryCriteria BBCriteria = new BlackBerryCriteria();
BBCriteria.setAddressInfoRequired(ProvideAddressInfoTExt);
BBCriteria.setAltitudeRequired(true);
BBCriteria.setSatelliteInfoRequired(true, true);
BBCriteria.setCostAllowed(true);
BBCriteria.setPreferredPowerConsumption(BlackBerryCriteria.POWER_USAGE_HIGH); //testing for high power

BlackBerryLocationProvider bbLocationProvider
= (BlackBerryLocationProvider)
BlackBerryLocationProvider.getInstance(BBCriteria);
location = bbLocationProvider.getLocation(9000);
QualifiedCoordinates qualCoor = location.getQualifiedCoordinates();
cityName = location.getAddressInfo().getField(AddressInfo.CITY);
}
catch(LocationException le)
{
le.printStackTrace();
System.out.println(le.getMessage());
}
catch(InterruptedException ie)
{
ie.printStackTrace();
System.out.println(ie.getMessage());
}
catch(NullPointerException npe)
{
npe.printStackTrace();
cityName = "Caught Null Pointer";
Dialog.alert(npe.getMessage());
}
return cityName;
}

我是不是遗漏了什么或者有什么问题我已经在这个问题上纠结了几个小时了。我也尝试从该代码片段中捕获 Null Pointer Exception,如果从“static void main”中捕获,则 Uncaught Exception: pushModalScreen called by a non-event thread

        ....
try{
String location = cellLocation.CurrentLocation();
LabelField towerlocationText = new LabelField(towerString + location,
LabelField.FOCUSABLE|LabelField.DEFAULT_POSITION);
add(towerlocationText);
}
catch(NullPointerException npe)
{
npe.printStackTrace();
System.out.println(npe.getMessage());
Dialog.alert(npe.getMessage() + "" + "AddresInfo/LocationProvider/Locaiton gave null pointer exception" );
}
...

在 BB-9700 BB-9790 设备上试过以及模拟器 BB-9900

谢谢,

最佳答案

use 
Either :-
/***/
UiApplication.getUiApplication().invokeLater(new Runnable()
{
public void run()
{
Dialog.alert("Hello");
}
});
/***/
or
synchronized (UiApplication.getEventLock())
{
Dialog.alert("Hello");
}

无论你试图在非事件线程上显示对话框的什么地方,你都应该需要一个事件锁。您可以使用上述方法制作事件锁定阅读 article了解更多信息。

关于java - 将 Location API 与 LBS JSR-179 和 JSR-179 Extended 一起使用时城市名称的空指针异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12737609/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com