【问题标题】:Android Maps API key is correct, yet map not displayedAndroid Maps API 密钥正确,但地图未显示
【发布时间】:2015-02-19 23:14:47
【问题描述】:

TL;DR

我们需要移动

<uses-permission android:name="android.permission.INTERNET"/> 

</application> 

原问题

嗨, 我是android开发的新手。 我尝试了“Hello Google Maps”教程,但无法查看地图。 我注册了 API 密钥。 我正在使用安装在“D”驱动器上的 Ecipe。使用以下命令从我的 jdk 安装的 bin 文件夹中获取 MD5 指纹:

c:\program files\java\jdk 1.6\bin&gt; keytool -list -alias androiddebugkey -keystore "C:\Documents and Settings\Owner\.android\debug.keystore" -storepass android -keypass android

我得到了这个指纹

21:17:B1:D8:01:BD:F2:5A:9F:C9:A3:01:96:FA:9A:5B

用这个找到 API 密钥并得到这个

"0Gm7C3R3R2K1pmQGuGkS0rx582TWJEBdJwryFrA"

在布局中使用了以下代码

<com.google.android.maps.MapView
             android:layout_width="fill_parent"
             android:layout_height="fill_parent"
             android:apiKey="0Gm7C3R3R2K1pmQGuGkS0rx582TWJEBdJwryFrA"
             />

不显示静止地图。 请赐教。 提前致谢

LogCat 错误日志

11-25 03:14:38.432: ERROR/AndroidRuntime(10857): ERROR: thread attach failed
11-25 03:14:42.162: ERROR/AndroidRuntime(10866): ERROR: thread attach failed
11-25 03:14:45.562: ERROR/AndroidRuntime(10877): ERROR: thread attach failed
11-25 03:14:47.402: ERROR/MapActivity(10885): Couldn't get connection factory client
11-25 03:14:50.652: ERROR/PackageInstallationReceiver(6465): Remove /data/local/tmp/com.testGoogleMap.apk Fail!
11-25 03:14:58.952: ERROR/wpa_supplicant(1683): wpa_supplicant_ctrl_iface_ap_scan: 2
11-25 03:14:58.952: ERROR/wpa_supplicant(1683): Scan request
11-25 03:14:59.802: ERROR/wpa_supplicant(1683): wpa_supplicant_ctrl_iface_ap_scan: 1

我的清单文件

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
  package="com.helloGoogleMaps"
  android:versionCode="1"
  android:versionName="1.0">


<application android:icon="@drawable/icon" android:label="@string/app_name"  android:debuggable="true">
    <uses-permission android:name="android.permission.ACCESS_INTERNET"/>
    <uses-library android:name="com.google.android.maps"/>
    <activity android:name=".HelloGoogleMaps"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

</application>
<uses-sdk android:minSdkVersion="7" />


</manifest> 

修改清单

<?xml version="1.0" encoding="utf-8"?>

<application android:icon="@drawable/icon" android:label="@string/app_name"  android:debuggable="true">

    <uses-library android:name="com.google.android.maps"/>
    <activity android:name=".HelloGoogleMaps"
              android:label="@string/app_name"
              android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

    </activity>

</application>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-sdk android:minSdkVersion="7" />

【问题讨论】:

  • 您是否也可以查看 LogCat 并查看那里显示了哪些错误消息(如果有)?在 Eclipse 中,窗口 > 显示视图 > 其他 > Android > LogCat
  • 您在手机上安装的版本实际上是用调试密钥签名的吧?还有什么特殊原因你有两次uses-library 描述吗?
  • @ Octavian --> 更新了清单
  • @Ankit Sachan:更新了我的答案。
  • @Octavian:我最初尝试过但没有成功

标签: android google-maps android-mapview


【解决方案1】:

您的清单中的某些权限似乎有问题,这是 AndroidManifest.xml 的工作示例:

<?xml version="1.0" encoding="utf-8"?>
  <manifest package="<your package>"
    android:versionCode="1"
    android:versionName="1.0" 
    xmlns:android="http://schemas.android.com/apk/res/android">

    <uses-permission android:name="android.permission.INTERNET" />

    <uses-sdk android:minSdkVersion="3" /> 

    <application android:icon="@drawable/icon"
                 android:label="@string/app_name" 
                 android:debuggable="true">   

      <activity android:name="<package>.Activity"
                android:label="@string/app_name"
                android:theme="@android:style/Theme.NoTitleBar">
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
      </activity>

      <uses-library android:name="com.google.android.maps" ></uses-library>

    </application>

  </manifest>

查看您的清单并检查是否:

  • INTERNET 权限在那里
  • uses-library 在那里

【讨论】:

  • 谢谢。看了这个之后,我注意到 标签必须在 标签之外。
【解决方案2】:

同时确保您在带有 Google API 映像的模拟器上运行它,否则您将不会在模拟器上安装 Google 地图。

更新:刚刚发现了错误。不是ACCESS_INTERNET 而是只有INTERNET 的权限。所以android.permission.INTERNET

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-29
    • 1970-01-01
    相关资源
    最近更新 更多