5

我正在为 android 实现谷歌地图。我创建了一个测试应用程序并在该应用程序中插入了所有权限等,并且该应用程序完美运行。

但是当我尝试将相同的代码复制到我的真实应用程序时,它会在 android 活动上显示空白屏幕。尽管我已经在google api console.

这是我的测试项目清单的样子:

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

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

<permission
    android:name="com.example.mapstutorial.permission.MAPS_RECEIVE"
    android:protectionLevel="signature"/>
<uses-permission android:name="com.example.mapstutorial.permission.MAPS_RECEIVE"/>
<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-feature
    android:glEsVersion="0x00020000"
    android:required="true"/>

<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" />
    <meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="my api key"/>

    <activity
        android:name="com.example.mapstutorial.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>
</application>

</manifest>

这是我真正的项目清单的样子:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.shop.shoppinglist"
android:versionCode="1"
android:versionName="1.0" >

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

<permission      android:name="com.shop.addtask.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<permission      android:name="com.shop.shoppinglist.permission.C2D_MESSAGE"    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="android.permission.GET_ACCOUNTS" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES"/>
<uses-permission android:name="com.google.android.c2dm.permission.RECEIVE" />
<uses-permission android:name="com.shop.addtask.permission.MAPS_RECEIVE"/>
<uses-permission android:name="com.shop.shoppinglist.permission.C2D_MESSAGE" />

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

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

    <uses-library android:name="com.google.android.maps"/>
    <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my api key"/>

    <activity
        android:name=".Login_Activity"
        android:label="@string/title_activity_main" 
        android:theme="@style/Theme.Sherlock" 
        android:screenOrientation="portrait" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>
</application>

我在控制台指纹中更新了包名称,com.shop.addtask但它仍然显示白屏。可能导致问题的原因是什么?apikey我在两个应用程序中使用的都是相同的。但它test application不适用于real app.

  • 我已经使用指纹创建了 api 密钥
  • 我已经on在控制台中切换了 google maps android v2
  • 我正在使用与控制台中提到的相同的 api 密钥。

所以这些事情是正确的,问题不能由其中之一引起。

4

8 回答 8

6

2个可能的原因:

1.这部分:

 <uses-library android:name="com.google.android.maps"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my api key"/>

应该在结束application标签之前。

2.很可能您的密钥存在某种问题。debug.keystore尝试通过删除文件夹并运行项目来生成新的。然后通过控制台再次注册。

你可以使用我写的这个指南来做到这一点:

谷歌地图 API V2 密钥

更新:

检查一下:

<permission      android:name="com.shop.addtask.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>

看起来您在此处设置的包不是您的应用程序的包,应该是:

  <uses-permission android:name="com.shop.shoppinglist.permission.MAPS_RECEIVE"/>
  <permission      android:name="com.shop.shoppinglist.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
于 2013-03-27T12:25:19.257 回答
1

一切都失败后,尝试卸载应用程序并重试。它在我的情况下有效。

于 2013-08-06T20:12:47.240 回答
1
<permission      android:name="com.shop.addtask.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="com.shop.addtask.permission.MAPS_RECEIVE"/>

包名是

package="com.shop.shoppinglist"

希望下面的链接对您有所帮助,AndroidManifest.xml for Google Maps Android API v2

尝试这个,

<permission      android:name="com.shop.shoppinglist.permission.MAPS_RECEIVE" android:protectionLevel="signature"/>
<uses-permission android:name="com.shop.shoppinglist.permission.MAPS_RECEIVE"/>
于 2013-03-27T13:12:11.250 回答
1

我的问题是我在 AndroidManifest 文件中更改了应用程序的包名称,但没有更改 gradle.build 的“applicationId”属性,也许这对某人有帮助......

于 2016-07-19T08:51:54.293 回答
0

我的地图也有类似的问题。修复所有库和关键问题后,我只看到一个标有“Google”的白色屏幕。问题是,我MapFragmentScrollView. 删除后ScrollView一切正常。我可以看到地图。

于 2015-04-30T15:37:30.083 回答
0

我有同样的问题。我尝试了有关此错误的不同解决方案的所有建议。包容地,我重新创建了我的 API 密钥(包括创建一个新项目),但没有任何效果。在浪费了很多很多时间之后,我决定删除我的安卓设备上的所有 myapp 用户数据,神奇地解决了这个问题。我的地图显示正确!耶!!!

Android 4.2.2:设置/应用程序/YourApp/清除数据。

我希望这个简单的解决方案在其他一切都失败时有所帮助。

于 2013-12-09T20:27:26.580 回答
0

好的,我有同样的问题,我按照博客和谷歌官方页面中的所有步骤操作,但没有工作,
<uses-library android:name="com.google.android.maps"/>
<meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my api key"/>
在关闭应用程序标签之前解决方案是正确的,但在另一种情况下我找到了解决方案,问题是我生成Macinthosh中的SHA1代码,但我克隆了存储库并在 windows 平台中工作,但我发现了这个问题,我的解决方案是转到 google 控制台并生成其他 apikey,但在 windows 中使用此命令获取 SHA1 代码,打开控制台并输入代码 下一步复制并粘贴此代码
cd C:\Program Files\Java\jre1.8.0_20\bin and press enter

keytool -list -v -keystore %HOMEPATH%\.android\debug.keystore -alias androiddebugkey -storepass android -keypass android

在控制台内按 Enter 后,您会在 google 控制台中显示 SHA1 代码复制和粘贴,指定 SHA1 代码“;”非常重要 和正确的包装..

问候!!!

于 2014-08-28T23:25:22.813 回答
0

检查您是否启用了 Google Maps Android API

  • 打开谷歌地图开发者控制台。
  • 转到图书馆-> Google Maps Android API
  • 如果它被禁用,请启用它。 在此处输入图像描述
于 2017-09-21T06:03:31.470 回答