Android Maps v2无法获得连接工厂客户端

时间:2013-09-04 07:08:37

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

我有问题。我得到一张空白的谷歌地图。我尝试了网上的一切。但似乎没有什么能解决这个问题。我已经粘贴了下面的logcat。我已经尝试了调试密钥和释放密钥。但两者都不起作用。地图不起作用。我只是得到了谷歌的灰色背景写在下面:(请帮助

09-04 12:29:57.037: E/MapActivity(9569): Couldn't get connection factory client
09-04 12:29:57.067: D/dalvikvm(9569): GC_FOR_ALLOC freed 54K, 2% free 9295K/9464K, paused 14ms, total 14ms
09-04 12:29:57.637: W/System.err(9569): IOException processing: 26
09-04 12:29:57.637: W/System.err(9569): java.io.IOException: Server returned: 3
09-04 12:29:57.647: W/System.err(9569):     at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
09-04 12:29:57.647: W/System.err(9569):     at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
09-04 12:29:57.657: W/System.err(9569):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
09-04 12:29:57.657: W/System.err(9569):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
09-04 12:29:57.657: W/System.err(9569):     at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)
09-04 12:29:57.657: W/System.err(9569):     at java.lang.Thread.run(Thread.java:841)

我的XML

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context=".MainActivity" >

    <TextView 
        android:id="@+id/textlat"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"/>
    <TextView 
        android:id="@+id/textlong"
        android:layout_height="wrap_content"
        android:layout_width="fill_parent"/>
    <com.google.android.maps.MapView
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/mapview"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:clickable="true"
    android:apiKey="API Key"/>  

</LinearLayout>

我的清单

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

    <uses-sdk
        android:minSdkVersion="17"
        android:targetSdkVersion="17" />

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true"/>
    <permission
    android:name="com.rrj.maps.permission.MAPS_RECEIVE" android:protectionLevel="signature" />
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
    <uses-permission android:name="com.rrj.maps.permission.MAPS_RECEIVE" />
    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >

        <activity
            android:name="com.rrj.maps.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <meta-data
         android:name="com.google.android.maps.v2.API_KEY"
         android:value="API_KEY"/>
        <uses-library android:name="com.google.android.maps"/>
    </application>

</manifest>

[更新]:我再次尝试生成sha1fingerprint。我观察到使用的签名算法是SHA256withRSA,而google dev site中的示例显示SHA1withRSA可能导致任何问题?

3 个答案:

答案 0 :(得分:1)

Google map v1已弃用 Google地图v2 check thisGood tutorial

尝试使用SupportMapFragmentin <{1}}

XML

地图样本link

答案 1 :(得分:1)

在清单中添加此权限

<permission
android:name="your.application.package.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />

删除这个

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

并检查您是否有Google Play服务。

答案 2 :(得分:1)

在您的XML文件中,您正在使用pld Google Map API v1 ..并且在您的Manifest文件中,您已经为Google Map V2编写了代码。所以只需将其添加到xml替换为旧版本。

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment"/>

并且还删除了

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

来自清单文件......

您也可以参考:

Still Gets "Couldn't get connection factory client" Error

android google map Couldn't get connection factory client