未使用Google Places API获取商家信息数据 - 此API项目无权使用此API

时间:2015-07-28 05:53:12

标签: android google-maps-android-api-2 google-places-api autocompletetextview google-geocoding-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 和一两个其他
  3. 我按照建议执行了以下步骤。

    1. 从控制台创建服务器密钥并将其添加到项目中。
    2. 从控制台启用Places API
    3. 从控制台启用Geocoding API
    4. 您可以在下面的图片中看到。 enter image description here

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

      除此之外,地图工作正常。如果您想知道这是我在清单中添加的api密钥。

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

      我将服务器密钥直接添加到请求网址,如下所示

      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;
      }
      

      请帮助。

1 个答案:

答案 0 :(得分:6)

需要一些更彻底的研究,并经过一些试验和错误后才有效。主要的是我需要启用 Google Places API网络服务。它就像魅力一样。

希望这可以帮助那些人。