1

このコードで携帯電話を取得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

それで、私は何をすべきですか?

4

2 に答える 2

1

アプリケーションに関連する権限を追加し、対応するセキュリティドメインの証明書で署名します。

JSR179仕様では、の下に7つの権限が定義されてjavax.microedition.locationいます。コードで実行する必要があることに基づいて、必要なものを選択してください。

Luciferのソリューション(VerisignまたはThawte)は、ロケーション機能グループが、コードを実行する電話の信頼できるサードパーティのセキュリティドメインにある場合に役立ちます。ただし、電話のモバイルネットワーク事業者または製造業者は、代わりにセキュリティドメインに場所を置くことを決定した可能性があります。

https://stackoverflow.com/q/1716755には、MIDPセキュリティモデルの簡単な説明が含まれています。

于 2012-05-25T09:59:06.203 に答える
1

制限された API である Location API にアクセスしようとしています。これを実現するには、 VerisignThawteなどの署名証明書を使用してモバイル アプリケーションに署名する必要があります。

証明書の費用は約 20,000 インドルピーです。

署名証明書に関する他の回答はこちらこちらをご覧ください。

于 2012-05-25T09:37:47.977 に答える