1

私はAndroidアプリを開発しており、Google Places APIを使用している間、正常に動作していました. emulatorHTTPで実行すると、期待されるすべての結果がリクエストから取得されます。しかし、マップのリリース キーを使用してデバイスにエクスポートすると、クラッシュしました。結果を取得する Google プレイス API に問題があることがわかりました。エラー コードは、結果がゼロである場合があり、リクエストが無効であることがわかりました。unfortunately app stopped working

これを解決するためにあらゆる方法を試しましたが、この問題を解決できませんでした。コードは次のようになります。

public PlacesList search(double latitude, double longitude, double radius, String searchtypes) throws Exception {

        this._latitude = latitude;
        this._longitude = longitude;
        this._radius = radius;

        try {

            HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
            HttpRequest request = httpRequestFactory
                    .buildGetRequest(new GenericUrl(PLACES_SEARCH_URL));
            request.getUrl().put("key", API_KEY);
            request.getUrl().put("location", _latitude + "," + _longitude);
            //request.getUrl().put("rankby",  "distance");
            request.getUrl().put("radius", _radius); // in meters
            request.getUrl().put("sensor", "false");
            if(searchtypes != null)
                request.getUrl().put("types", searchtypes);

            PlacesList list = request.execute().parseAs(PlacesList.class);
            // Check log cat for places response status
            //Log.d("Places Status", "" + list.status);
            return list;

        } catch (HttpResponseException e) {
            Log.e("Error:", e.getMessage());
            return null;
        }

    }

    /**
     * Searching single place full details
     * @param refrence - reference id of place
     *                 - which you will get in search api request
     * */
    public PlaceDetails getPlaceDetails(String reference) throws Exception {
        try {
            //Log.v("reference " , reference);
            HttpRequestFactory httpRequestFactory = createRequestFactory(HTTP_TRANSPORT);
            HttpRequest request = httpRequestFactory
                    .buildGetRequest(new GenericUrl(PLACES_DETAILS_URL));
            request.getUrl().put("key", API_KEY);
            request.getUrl().put("reference", reference);
            request.getUrl().put("sensor", "false");

            PlaceDetails place = request.execute().parseAs(PlaceDetails.class);
            Log.v("place successfully bought " , place.result.name);
            return place;

        } catch (HttpResponseException e) {
            Log.e("Error in Perform Details", e.getMessage());
            throw e;
        }
    }

    /**
     * Creating http request Factory
     * */
    public static HttpRequestFactory createRequestFactory(
            final HttpTransport transport) {
        return transport.createRequestFactory(new HttpRequestInitializer() {
            public void initialize(HttpRequest request) {
                GoogleHeaders headers = new GoogleHeaders();
                headers.setApplicationName("TreasureRun");
                request.setHeaders(headers);
                JsonHttpParser parser = new JsonHttpParser(new JacksonFactory());
                request.addParser(parser);
            }
        });
    }

The above code are present in GooglePlaces.java file and it is called from async task present in java2 file.

The code in java2 file is:

@Override
protected String doInBackground(String... args) {
 // creating Places class object 
 String taskstatus;
 googlePlaces = new GooglePlaces();
 try {
     String keyword = "cafe|restaurant";
     double radius = 1000; // 1000 meters 
     nearPlaces = googlePlaces.search(gps.getLatitude(),
     gps.getLongitude(), radius, keyword);
 } catch (Exception e) {
    e.printStackTrace();
}
taskstatus = "done";
return taskstatus;
}

しかし、何が起こっていたかは、私が電話したときです:

status = nearPlaces.status;

実際のデバイスではステータスが「OK」ではなく、クラッシュしていると思います。しかし、エミュレータでは完璧でスムーズに動作します

何日も試しました。誰でも私を助けてください

ありがとうナヴィーン

4

0 に答える 0