我希望通过此代码获取手机移动设备的longitude
和latitude
:
public void commandAction(Command com, Displayable d) {
if (com == position)
{
try
{
Criteria cr = new Criteria();
cr.setHorizontalAccuracy(500);
LocationProvider lp = LocationProvider.getInstance(cr);
// get the location, one minute timeout
Location l = lp.getLocation(60);
Coordinates coords = l.getQualifiedCoordinates();
if (coords != null)
{
double longitude = coords.getLongitude();
double latitude = coords.getLatitude();
String sLong = String.valueOf(longitude);
String sLat = String.valueOf(latitude);
Tlongitude.setString(sLong);
Tlatitude.setString(sLat);
}
} catch (LocationException ex) {
Tlongitude.setString("LocationException");
Tlatitude.setString("LocationException");
} catch (InterruptedException ex) {
Tlongitude.setString("InterruptedException");
Tlatitude.setString("InterruptedException");
}
}
}
问题在于,当点击“位置”命令时,系统会显示一条警告:java.lang.SecurityException : Application not authorized to access the restricted API
。
那我该怎么办?
答案 0 :(得分:1)
答案 1 :(得分:1)
向您的应用程序添加相关权限,并使用相应安全域中的证书对其进行签名。
JSR179规范在javax.microedition.location
下定义了7个权限。根据您的代码需要选择所需的内容。
如果位置功能组位于您要运行代码的手机的受信任第三方安全域中,Lucifer的解决方案(Verisign或Thawte)将提供帮助。不过,手机的移动网络运营商或制造商可能决定将位置放在他们的安全域中。
https://stackoverflow.com/q/1716755包含对MIDP安全模型的简要说明。