Android PlacePicker在发布后关闭2秒

时间:2016-01-02 22:24:54

标签: android google-maps android-intent google-places-api startactivityforresult

很遗憾,我无法在Android Place Picker closes immediately after launch找到答案。对我来说,PlacePicker启动,将位置显示为Unknown,然后返回resultCode 2.

重申一些事实:到目前为止,我的应用程序有两项活动。第一个活动是地图,到目前为止工作正常;没问题。第二个活动有一个按钮,允许用户启动PlacePicker。第一个活动启动地图没有任何问题的事实应该强化读者我的清单是好的,并且我的Google Api控制台具有正确的数据。所以这让我失望:我做错了什么?我使用的确切示例为https://developers.google.com/places/android-api/placepicker。实际上这是我的代码

String line = String.format("paty/to/script.py");
CommandLine cmd = CommandLine.parse(line);
DefaultExecutor executor = new DefaultExecutor();
ByteArrayOutputStream stdout = new ByteArrayOutputStream();
PumpStreamHandler psh = new PumpStreamHandler(stdout);
executor.setStreamHandler(psh);
int exitvalue = executor.execute(cmd);
String output = stdout.toString();

然后

try {
  IntentBuilder builder = new IntentBuilder();
  startActivityForResult(builder.build(this), REQUEST_PLACE_PICKER);
} catch (GooglePlayServicesRepairableException e) {
  e.printStackTrace();
} catch (GooglePlayServicesNotAvailableException e) {
  e.printStackTrace();
}

这是我的完整日志

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if (RESULT_OK != resultCode) {
        Log.d(TAG,"bad result: "+resultCode);
        return;
    }
    if (REQUEST_PLACE_PICKER == requestCode) {
        Place place = PlacePicker.getPlace(data, this);
        String toastMsg = String.format("Place: %s", place.getName());
        Toast.makeText(this, toastMsg, Toast.LENGTH_LONG).show();
    }
}

3 个答案:

答案 0 :(得分:0)

请确保您已将sha-1密钥添加到google api控制台。

如何获取SHA-1指纹: https://developers.google.com/places/android-api/signup#debug-cert 理想情况下,您可以将调试密钥SHA-1和释放密钥SHA-1添加到控制台,以便两个密钥都能够使用api。

您应该完成本页所述的步骤,并确保不要跳过任何内容: https://developers.google.com/places/android-api/signup#api-console

答案 1 :(得分:0)

我通过登录Google Developer Console解决了这个问题。然后前往Api>仪表板,然后单击启用APIS和服务。

Link to Google Developer Api Dashboard

答案 2 :(得分:0)

检查您应用的API信息中心。如果没有看到“适用于Android的Places SDK” API的API匹配,则可能未启用该API。如果看到该API被点击,请检查错误。如果看到403错误,则可能是您在使用1)错误的Android密钥或2)错误的应用程序限制或3)错误的API限制或上述各项的组合。