2012-05-25 4 views
1

Я хочу, чтобы получить longitude и latitude телефонного мобильного по этому коду:SecurityException возникает при попытке использовать JSR-179

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.

Итак, что мне делать?

ответ

1

добавьте соответствующее разрешение в ваше приложение и подпишите его с сертификатом в соответствующем домене безопасности.

Спецификация JSR179 определяет 7 разрешений под javax.microedition.location. Выберите те, которые вам нужны, в зависимости от того, что вам нужно для вашего кода.

Решение Lucifer (Verisign или Thawte) поможет, если группа функций местоположения находится в доверенном домене безопасности третьей стороны для телефонов, на которых вы хотите запустить свой код. Однако оператор мобильной связи или производитель мобильных телефонов решил разместить местоположение в своем домене безопасности.

https://stackoverflow.com/q/1716755 содержит краткое описание модели безопасности MIDP.

+0

В ответ на ваш ответ описывается, как остановить эти сообщения от эмулятора, но вы не делаете то же самое в реальном устройстве. – Lucifer

+0

К сожалению, разработчики java-me обычно не имеют доступа к политикам безопасности реальных устройств. Все, на что вы можете надеяться, - это документация от производителя или оператора мобильной сети о том, какой домен безопасности принадлежит функциональной группе (документация Nokia достаточно приличная). как правило, сторонние разработчики вынуждены прибегать к проб и ошибок, чтобы понять это. –

+0

согласен, но окончательное решение - только сертификат подписи. – Lucifer

1

Вы пытаетесь получить доступ к API-интерфейсу местоположения, который имеет ограниченный API. Для этого вы должны подписать свое мобильное приложение с сертификатом подписи, например Verisign, Thawte и т. Д.

Стоимость сертификата составляет около 20 тыс. Индийских рупий.

Другие ответы на вопросы here и here относительно сертификата подписи.

 Смежные вопросы

  • Нет связанных вопросов^_^