【问题标题】:Android MapView:Couldn't find the connection factory clientAndroid MapView:找不到连接工厂客户端
【发布时间】:2013-02-07 07:28:14
【问题描述】:

据我所知,这个问题在这里讨论了很多次,但在我尝试的过程中,我仍然遇到了同样的问题,并且都尝试了我在这里看到的以及谷歌看到的,但这个问题仍然没有解决。

另外,我尝试了很多站点的示例代码,也出现了同样的问题。(问题是在MapActivity 派生类上,我可以看到grid 但映射未加载,同时抛出上述异常)

我尝试使用我自己的API key 以及示例代码中已经存在的键。而且,还尝试在设备中同时启用和禁用位置选项。

请务必为我提供帮助。

下面使用了一个清单文件...

**

<permission
      android:name="com.Example.appl.permission.MAPS_RECEIVE"
      android:protectionLevel="signature"/>

<uses-permission android:name="com.Example.appl.permission.MAPS_RECEIVE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<application
    android:allowBackup="true"
    android:icon="@drawable/ic_launcher"
    android:label="@string/app_name"
    android:theme="@style/AppTheme" >

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


    <activity
        android:name="com.Example.appl.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>
    <activity android:name=".MHomeActivity"></activity>





</application>

**

【问题讨论】:

  • 您有什么问题吗?
  • 嘿 Sivaraj,请检查主题行以了解我遇到的异常,并且在日志中我发现了一些服务器错误 3...
  • 你使用过这个权限吗?
  • 是的 Sivaraj,我做了并且还添加了 COARSE.FINE 和其他。不仅如此,还尝试了添加读/写、GPRS 等权限……但仍然有问题……
  • 您可以在这里发布您的日志和清单吗?

标签: android google-maps android-mapview mapactivity


【解决方案1】:

最后,在搞砸了两天之后,我仍然得到了解决方案,如果有人最好请更新我。

我做了什么,在查看了这么多线程和链接之后,我知道上面的代码/清单没有任何问题,所以我深入研究了 Google Map API 密钥,下面的解决方案给我看路...(请请注意,我正在通过 mac 进行开发)。

首先我打开我的终端,在那里我访问了 Java 文件夹及其 bin 文件夹,然后在命令下方键入以下内容:-

***keytool -list -alias androiddebugkey -keystore \User\.android\debug.keystore -storepass android -keypass android***

请注意,在上面的命令“\User.android\debug.keystore”中,这是保存你的 android 调试密钥的路径,以防万一你想在 Eclipse 中找到该路径(可能它在你的系统上有所不同),请使用以下内容:

**eclipse->window->preferences->Android->Build** 

因此,当您运行上述命令时,您会找到 MD5 密钥,然后您需要访问以下链接:-

https://developers.google.com/maps/documentation/android/v1/maps-api-signup

在这里,您将在下面给出上面获得的 MD5 密钥,它会为您生成 api 密钥进行调试。 然后在所需的 xml 或编码中提供此 api 密钥(取决于您如何编码)。

但此规定适用于 v1。如果有人找到 v2 的方法,请更新此线程。

【讨论】:

  • 这是我创建的第一个真正的解决方案。
  • 感谢 rkmax 的反馈。
  • 您是否找到了适用于 Android 10 的 Maps API v2 API 解决方案?
  • 嗨,rkmax,实际上我没有将我的任务进一步分配给 v2,因为需要交付项目,但我需要这样做会更新你,如果你发现了什么,请更新这篇文章。
  • 我已经创建了解决方案阅读my answer。它在 Galaxy ACE 上运行良好
【解决方案2】:

检查您是否在Application标签内的android-manifest文件中添加了地图库。

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

【讨论】:

  • 抱歉见到你迟到了...伙计,我已经将此标签保留在我的清单中的应用程序标签中...请建议我您认为可能是导致该问题的原因。 ..
【解决方案3】:

我搜索了你的问题我有解决方案,下面给出请参考这些...

Couldn't get connection factory client in logcat

Couldn't get connection factory client

【讨论】:

  • 这不是解决方案,因为这不是与清除并再次运行代码相关的问题......这是我从昨天早上开始面临的一个严重问题,并且仍在继续......
  • 在你的库中有 maps.jar 文件
  • 我应该从哪里得到这个罐子?
  • 我检查了 jar 已经存在于结构中的 Google api 文件夹中...
【解决方案4】:

阅读并浏览了很多关于使用 API v2 的答案,即使你是为 Android 2.2 开发的

获取签名 SHA1

keytool -list -alias androiddebugkey -keystore ~/.android/debug.keystore -storepass android -keypass android

得到类似 (SHA1): 82:73:C3:82:73:C3:82:73:C3:82:73:C3:82:73:C3:82:73:C3 的东西

获取 API_KEY

在服务设置为Google Maps Api v2 中转到Google Api Console,稍后在 Api 访问部分单击创建新的 Android 密钥或更新(如果有的话),放入对话框

82:73:C3:82:73:C3:82:73:C3:82:73:C3:82:73:C3:82:73:C3;COM.PACKAGE.NAME

添加库

google-play-services 添加到您的项目中,转到“库”部分中的Project properties -&gt; Android,单击添加并浏览至sdk-android&gt;/extras/google/google_play_services/libproject/google-play-services_lib

在您的项目依赖项中检查 android-support-v4.jar 库。

编辑您的代码

<!--AndroidManifest.xml-->
<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="17" />
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>
<permission android:name="COM.PACKAGE.NAME.permission.MAPS_RECEIVE"></permission>
<uses-permission android:name="COM.PACKAGE.NAME.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>

<!--inside <application> tag-->
<meta-data android:value="API_KEY" android:name="com.google.android.maps.v2.API_KEY"/>

在您的 Activity 类中,您需要从 android.support.v4.app.FragmentActivity 扩展

//MainActivity.java

package COM.PACKAGE.NAME;    

import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

}

最后你需要改变你的activity_main.xml

<!--./res/layout/activity_main.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"/>

【讨论】:

  • 您好,感谢您的快速回复,但我也在模拟器以及我自己的 Carbon(A1+ 系列)和三星手机中进行了尝试和测试,我确实遇到了同样的问题.. 但是让我再去一次,会更新你的
  • 今天我在我的 Galaxy SIII 上用 Android 4.1.1 测试了它并且运行良好!
猜你喜欢
  • 2012-01-22
  • 1970-01-01
  • 1970-01-01
  • 2013-09-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-01-13
  • 2013-12-31
相关资源
最近更新 更多