安卓地图API密钥正确,但地图未显示。

3

简要概述

我们需要迁移

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

下面

</application> 

原问题

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

c:\program files\java\jdk 1.6\bin> 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" />


你正在安装的版本实际上是使用调试密钥签名的,对吗?另外,你在那里两次使用了 uses-library 描述,有什么特殊原因吗? - Octavian Helm
@Ankit Sachan:不过你仍应该使用正确的。你的设备信号强吗?或者它连接到 WiFi 网络了吗? - Octavian Helm
好的,我们得到了答案,需要将<uses-permission android:name="android.permission.INTERNET"/>移动到</applications>标签之后。 - Ankit Sachan
@Ankit Sachan 当你得出答案(且是你自己的)时,请将其作为附加答案发布,否则会污染原始问题。 - Gary
大家好,我也有同样的问题。我按照这篇帖子中所说的进行了更正,但仍然出现以下错误 - 包“”需要不可用的共享库com.google.android.maps;忽略! - Ava
显示剩余7条评论
2个回答

3

看起来是您的清单文件中某些权限的问题,这里是一个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

注意:请勿删除HTML标签。

1
谢谢。看完这个后,我注意到<uses-permissions>标签必须放在<application>标签外面。 - Dan Goldstein

1

同时确保您在带有Google API镜像的模拟器上运行它,否则您将无法在模拟器上安装Google Maps。

更新:刚刚发现错误。权限不是ACCESS_INTERNET,而只是INTERNET。因此,应该使用android.permission.INTERNET


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接