空白屏幕Android 2.2 Google Maps v2

时间:2013-03-20 06:07:52

标签: java android google-maps google-maps-android-api-2 android-maps-v2

编辑:

我转移了20多个尝试的项目,以使用Google地图for Android v2。更改密钥和内容后,现在可以正常工作。我不知道是什么让这项工作,但谢谢大家。我有一个密钥库,关键是正确的。我猜它以某种方式神奇地修复了。好吧,谢谢你们。

我正在搜索2天,我无法解决这个问题。我做了一切,但是,这个应用程序无法正常工作。

我希望我的应用程序能够在Android 2.2及更高版本上运行。就像它说“如果你在8级创建你的应用程序,它将支持95%的市场”。

以下是我的截图和源代码:

我正在粘贴最容易获得的源代码。我从网上拿了这个。

这是命令的输出

keytool -list -keystore <path>
*****************  WARNING WARNING WARNING  *****************
* The integrity of the information stored in your keystore  *
* has NOT been verified!  In order to verify its integrity, *
* you must provide your keystore password.                  *
*****************  WARNING WARNING WARNING  *****************
     

密钥库类型:JKS密钥库提供商:SUN

Your keystore contains 1 entry

androiddebugkey, 15.Mar.2013, PrivateKeyEntry,
Certificate fingerprint (SHA1): xxx

main.xml文件:

<?xml version="1.0" encoding="utf-8"?>
<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="AIzaSyDim-x5Gxxx"
/>

清单文件:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.androidhive.googlemaps"
    android:versionCode="1"
    android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <!-- Add Google Map Library -->
        <uses-library android:name="com.google.android.maps" />
        <activity
            android:name=".AndroidGoogleMapsActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>
    <!-- Allow to connect with internet -->
    <uses-permission android:name="android.permission.INTERNET" />
</manifest>

java文件(无需将其全部粘贴,但我想最好将其全部粘贴)

http://pastebin.com/yF95Rcbd

以下是我的截图:

http://i.imgur.com/gExHpUG.png

http://i.imgur.com/AMOXKhr.png

http://i.imgur.com/Aqon97Y.png

我正在尝试将此应用程序编译为Android 4.2.2,但我尝试并希望在2.2及更高版本中使其工作。

以下是属性窗口的Android选项卡,以确保:

http://i.imgur.com/ht0CQwT.png

这是我的日志

03-20 07:01:20.145: W/System.err(956):  at java.lang.Thread.run(Thread.java:856)
03-20 07:01:20.665: W/System.err(956): IOException processing: 26
03-20 07:01:20.665: W/System.err(956): java.io.IOException: Server returned: 3
03-20 07:01:20.665: W/System.err(956):  at android_maps_conflict_avoidance.com.google.googlenav.map.BaseTileRequest.readResponseData(BaseTileRequest.java:115)
03-20 07:01:20.675: W/System.err(956):  at android_maps_conflict_avoidance.com.google.googlenav.map.MapService$MapTileRequest.readResponseData(MapService.java:1473)
03-20 07:01:20.675: W/System.err(956):  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.processDataRequest(DataRequestDispatcher.java:1117)
03-20 07:01:20.675: W/System.err(956):  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher.serviceRequests(DataRequestDispatcher.java:994)
03-20 07:01:20.675: W/System.err(956):  at android_maps_conflict_avoidance.com.google.googlenav.datarequest.DataRequestDispatcher$DispatcherServer.run(DataRequestDispatcher.java:1702)

这些线条一直在重复。

非常感谢你。     您的帖子似乎包含未正确格式化为代码的代码“错误     我删除空白行。对不起乱码。

5 个答案:

答案 0 :(得分:1)

http://i.imgur.com/ht0CQwT.png 查看快照。您没有添加显示Google Android Map V2所需的Google Play服务库。请下载并添加该库,然后重试。

请同时查看目标。你的目标是4.2.2,你在2.2上访问它。将目标更改为2.2并使用支持片段。

谢谢,

答案 1 :(得分:1)

我已经解决了这个问题,

  • 打开Goog​​le API控制台
  • 选择API访问
  • 修改API密钥允许的Android应用
  • 使用您的包名称更改包名称
  • 示例:00:06:A5:0E:04:A2:1E:8F:FE:6B:7F:46:23:C3:xx:xx:xx:xx:xx:xx; com.example.androidmapview

答案 2 :(得分:0)

使用android mapapi v2,主要原因是你必须为你的应用添加播放服务,如下所示:

<permission
        android:name="com.example.androidmapview.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.androidmapview.permission.MAPS_RECEIVE" />

在布局中使用片段类:

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

改变你的清单:

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

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

    <permission
        android:name="com.example.androidmapview.permission.MAPS_RECEIVE"
        android:protectionLevel="signature" />

    <uses-permission android:name="com.example.androidmapview.permission.MAPS_RECEIVE" />
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.androidmapview.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="AIzxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"></meta-data>
    </application>

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
</manifest>

活动:

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

import com.google.android.gms.maps.SupportMapFragment;

public class MainActivity extends FragmentActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SupportMapFragment fragment = new SupportMapFragment();
        getSupportFragmentManager().beginTransaction()
                .add(android.R.id.content, fragment).commit();
    }
}

有关详细信息,请查看link,其中将详细介绍api v2

答案 3 :(得分:0)

您缺少API KEY的权限和元数据。

仔细阅读:https://developers.google.com/maps/documentation/android/start

答案 4 :(得分:0)

我用这样的放大/缩小按钮解决了我的空白屏幕问题。(这是在我更改我的包名后发生的)

  1. 删除密钥库文件
  2. 创建新的密钥库文件
  3. 获取SHA1指纹
  4. 转到API控制台
  5. 制作新的Android应用程序。
  6. 粘贴指纹
  7. 在清单文件中使用给定的API密钥
  8. 这对我有用