【问题标题】:Map API v2 Authorisation FailureMap API v2 授权失败
【发布时间】:2012-11-28 00:52:36
【问题描述】:

好的,这就是我使用example所做的

  1. 通过 keytool 获得调试密钥(确保它是 Eclipse 在 Preferences -> Android -> Build 中使用的调试密钥)
  2. 通过命令生成密钥

    $ keytool -list -v -keystore debug.keystore -alias androiddebugkey -storepass android -keypass android

  3. 在 Google API 控制台中复制粘贴 SHA1 总和 + 我的包名:

    sum;com.my.package

  4. 在 Google API 控制台的同一项目中启用 Google Map API v2

  5. 将其复制到元数据中的 Manifest 应用程序。

  6. 通过 SDK 管理器下载并导入 google-play-services_lib 项目并将其作为库项目引用。以及 ActionBarSherlock。

  7. 在启动之前,我确保 GooglePlayServices 可用。

清单:

<uses-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>

<permission
    android:name="com.my.package.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>

<uses-permission android:name="com.my.package.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>

应用:

<meta-data
    android:name="com.google.android.maps.v2.API_KEY"
    android:value="debug_key"/>

proguard 的东西也被添加了,但我现在不混淆。

DrugstoresMapActivity 扩展了 SherlockFragmentActivity

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <fragment
        android:id="@+id/map_fragment"
        class="com.google.android.gms.maps.SupportMapFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"/>

</RelativeLayout>

project.properties

target=android-17
android.library.reference.1=../google-play-services_lib
android.library.reference.2=../ActionBarSherlock

ActionBarSherlock 在库中有 android-support-v4,如果重要的话,不是主项目。

StartupActivity 确保 DrugstoresMapActivity 仅在服务可用时才会启动

private void attempt() {
    int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(getBaseContext());

    switch (result) {
        case ConnectionResult.SUCCESS:
            startActivity(new Intent(this, DrugstoresMapActivity.class));
            finish();
            break;

        default:
            GooglePlayServicesUtil.getErrorDialog(result, this, REQUEST_DIALOG)
                .show();
            break;
    }
}

仔细检查了钥匙没问题。 不知道我在这里错过了什么。

【问题讨论】:

  • 只是好奇,你是怎么知道的?我每天都在技术博客上,每天都在看 android 开发者文档,而我只是碰巧在我现有代码中尝试解决 android maps v1 的一个不可能的问题时才发现这一点。
  • 了解什么。关于启用了错误的服务?如果是,您应该在答案评论中提出这个问题,而不是让问题更清楚。经过数小时浏览有关此问题的不同问题后,我在 StackOverflow 的某处找到了建议。
  • 不,你是怎么知道 android maps v2 的,我知道我晚了两周,但我认为这很重要
  • 我在 google 中寻找文档(API 参考)。

标签: android android-maps google-maps-api-2


【解决方案1】:

启用了错误的服务。 确保启用了“Google Maps Android API v2”,而不是“Google Maps API v2”,然后重新生成 API 密钥。

【讨论】:

  • +1 Bingo.. :) 我坚持使用 API 密钥,删除密钥库,重命名应用程序包..
  • 启用 Google Maps Android API v2 后,它仍然不适合我。所以我尝试将清单中的目标 sdk 从 16 更改为 17 并修复它。注意切换回 16 仍然有效。
  • 哦,我的话 - 这也是我的问题,我正在拔头发。谢谢!!
  • 谢谢你一百万!我在这个问题上卡了 2 天!
  • 巴津加!!!该死!我不能再感谢你了!!我将与其他人交叉分享您的答案。我相信他们会很感激的! :-D :-D
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-11-21
  • 2017-07-16
  • 1970-01-01
  • 2019-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多