Android MapView:找不到连接工厂客户端

时间:2013-02-07 07:28:15

标签: android google-maps android-mapview mapactivity

据我所知,这个问题在这里讨论了很多次,但是在我尝试的时候,我仍然遇到了同样的问题,所有人都尝试了我在这里看到的以及Google所看到的问题,但仍然没有解决这个问题。

另外,我尝试了来自这么多网站的示例代码,也存在同样的问题。(在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>

**

4 个答案:

答案 0 :(得分:1)

最后,在弄乱了两天之后,如果有人请最好的话请给我更新解决方案。

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

首先我打开终端,然后在那里我访问了Java文件夹并在bin文件夹中,然后在命令下面输入: -

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

请注意上面的命令&#34; \ User.android \ debug.keystore&#34;这是保存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的方法,请更新此帖子。

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

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

Couldn't get connection factory client in logcat

Couldn't get connection factory client

答案 3 :(得分:0)

阅读并浏览了很多使用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 -> Android,然后点击添加并浏览到sdk-android>/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"/>