未使用 google Places API 获取 Places 数据 - 此 API 项目无权使用此 API

Not getting Places data using google Places API - This API project is not authorized to use this API

我正在使用此处提出的问题的代码 Autocomplete textview google places api description -> place_id。我更改了代码以将其添加到我的应用程序中。当我 运行 代码时,当我 运行 代码

时,它会给我以下响应
07-28 11:17:19.244: E/result(350): {"error_message":"This API project is not authorized to use this API. Please ensure that this API is activated in the APIs Console: Learn more: https:\/\/code.google.com\/apis\/console","predictions":[],"status":"REQUEST_DENIED"}

我搜索了一些线程并从以下线程中搜索

  1. Maps API keys for geocoding not working
  2. This IP, site or mobile application is not authorized to use this API key 和另外一两个

我按照建议执行了以下步骤。

  1. 从控制台创建了一个服务器密钥并将其添加到项目中。
  2. 已从控制台启用Places API
  3. 已从控制台启用 Geocoding API

您可以在下图中看到。

当我 运行 代码时,它仍然向我显示上述错误。 我是否需要从控制台启用任何其他 API

除此之外,这些地图运行良好。如果您想知道这是我在清单中添加的 api 密钥。

<!-- Goolge Maps API Key Development mode -->
            <meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSyAbo3luzbyQTuuPLOyo_Ml***********" />

并且我直接将服务器密钥添加到请求 url,如下所示

private ArrayList<String> autocomplete(String input) {
ArrayList<String> resultList = null;
    HttpURLConnection conn = null;
    StringBuilder jsonResults = new StringBuilder();
    try {
        StringBuilder sb = new StringBuilder(PLACES_API_BASE + TYPE_AUTOCOMPLETE + OUT_JSON);
        sb.append("?key=" + API_KEY);
        sb.append("&input=" + URLEncoder.encode(input, "utf8"));

        URL url = new URL(sb.toString());
        conn = (HttpURLConnection) url.openConnection();
        InputStreamReader in = new InputStreamReader(conn.getInputStream());

        // Load the results into a StringBuilder
        int read;
        char[] buff = new char[1024];
        while ((read = in.read(buff)) != -1) {
            jsonResults.append(buff, 0, read);
        }
    } catch (MalformedURLException e) {
        Log.e(LOG_TAG, "Error processing Places API URL", e);
        return resultList;
    } catch (IOException e) {
        Log.e(LOG_TAG, "Error connecting to Places API", e);
        return resultList;
    } finally {
        if (conn != null) {
            conn.disconnect();
        }
    }

    try {
        // Create a JSON object hierarchy from the results
        JSONObject jsonObj = new JSONObject(jsonResults.toString());
        JSONArray predsJsonArray = jsonObj.getJSONArray("predictions");
        Log.e("result",jsonObj.toString());
        // Extract the Place descriptions from the results
        resultList = new ArrayList<String>(predsJsonArray.length());
        for (int i = 0; i < predsJsonArray.length(); i++) {
            resultList.add(predsJsonArray.getJSONObject(i).getString("description")+ "," + predsJsonArray.getJSONObject(i).getString("place_id") );
        }
    } catch (JSONException e) {
        Log.e(LOG_TAG, "Cannot process JSON results", e);
    }
    return resultList;
}

请帮忙。

需要进行更彻底的研究,经过反复试验后它起作用了。最主要的是我需要启用 Google Places API Web Service。而且效果很好。

希望这对那里的人有所帮助。