Android Google Map API V2 Blank Screen

2019-01-17 21:21发布

问题:

Hi I recently followed Vogella's tutorial on Google Map API v2. The code is similar to his. But for some reason the map shows up blank and the logcat shows no error either. I also followed this video to get the SHA1 finger print then I put the API key inside the manifest file. I used the debug keystore C:\Users\UserName.android\debug.keystore which is also the default debug keystore located in Eclipse -> Windows -> Preference -> Android -> Build.

I also generated a new API key and it still doesn't work.

Manifest file:

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

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

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

    <uses-feature
        android:glEsVersion="0x00020000"
        android:required="true" />
    <uses-feature android:name="android.hardware.camera" />
    <uses-feature android:name="android.hardware.camera.autofocus" />
    <uses-feature android:name="android.hardware.camera.flash" />

    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.VIBRATE"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.SET_DEBUG_APP"></uses-permission>
    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".HomeActivity"
            android:label="@string/title_activity_home" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>

        </activity>
        <activity android:name=".ScanActivity"/>
        <activity android:name=".MapActivity"/>
        <activity android:name=".BarcodeHelper"/>
        <activity android:name=".JsonHelper"/>

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

</manifest>

This is my layout file for the map activity:

    <RelativeLayout 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"
    tools:context=".MapActivity" >

        <fragment
        android:id="@+id/map"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        class="com.google.android.gms.maps.MapFragment" />

</RelativeLayout>

This is my map activity:

public class MapActivity extends Activity { static final LatLng HAMBURG = new LatLng(53.558, 9.927); static final LatLng KIEL = new LatLng(53.551, 9.993); private GoogleMap map; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_map); map = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)) .getMap(); Marker hamburg = map.addMarker(new MarkerOptions().position(HAMBURG) .title("Hamburg")); Marker kiel = map.addMarker(new MarkerOptions() .position(KIEL) .title("Kiel") .snippet("Kiel is cool") .icon(BitmapDescriptorFactory .fromResource(R.drawable.ic_launcher))); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.activity_map, menu); return true; } }

Thanks!

回答1:

You have couple of permission issues with your manifest. First, in the following you need to replace the package name with your package, you also need to as a uses-permission

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

per your package name, should be --

<permission
          android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"
          android:protectionLevel="signature"/>
<uses-permission android:name="com.example.barcodelibrary.permission.MAPS_RECEIVE"/>

Finally, you seem to be missing the following permissions from the specifying permissions section of the Getting Started guide --

<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"/>


回答2:

For me it turned out that I didn't enabled the Google Maps Android API v2. We were using another Google Maps API which I assumed to be the same.



回答3:

You Must Run your app in amulator having Following Configuration.... 1) Google API(x86 System image) 2) select checkBox indicating Use Host GPU..



回答4:

if it didn't work though,follow this

Solving the blank screen issue on maps: Hi there ,i have been through this blank screen for a very long time and tried out all solutions u can imagine.Now it solved and the steps were:

1-Go through all steps of this tutorial carefully.

2-If the blank screen still the same ,delete you debug key store file that exists in c:\Users\youUser.android\debug.keystore <-- delete this file

3-On the eClips IDE rebuild your app so it will automatically re create this file. 4-On eclips go to Window-->preferences-->android-->Build copy the fresh generated SHA1 and then follow the normal key generation steps . 5-Run on your real device ,and i hope you'll see your map :)



回答5:

I had to add the correct SHA-1 certificate fingerprint to my Google Developer Console.

  1. Display the current fingerprint: keytool -list -keystore ~/.android/debug.keystore

  2. Copy the fingerprint (e.g. 48:6F:55:B7:C5:E4:54:E1:29:D5:E1:E1:E2:A8)

  3. Add it to your credentials for that particular app in Google Developer Console



回答6:

Set custom keysote to the same as default one (Eclipse). And register a API key in google console as it's said in documentation.



回答7:

I 've got a similar problem with the map. After fixing all lib and key problems, I just saw a white sreen labled with "Google". The problem was, that I put the MapFragment into a ScrollView. After removing the ScrollView everything works fine. I can see the map.



回答8:

Android Studio: make sure you put your key in the right hierarchy



回答9:

Most people forget to activate the Google Maps Android API V2 in the developer console, I activated it and voila, my map appeared.



回答10:

In my case it was an existing app that I cloned from GitHub and did not change the API Key. What worked for me is to enable the SHA-1 of my signing certificate. Follow these short instructions to get a SHA-1 fingerprint.

Then I had the main developer add my SHA-1 fingerprint to the authorized packages for his relevant API Key here. Then I did the build again in the same way and it worked.



回答11:

my answer in other post is what actually works for me, i paste the App signing certificate sha-1



回答12:

I have a similar issue, where debug was ok, but blank screen on release. API keys were fine.

What worked is replacing this :

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="@string/google_maps_key" /> 

By this

<meta-data
            android:name="com.google.android.maps.v2.API_KEY"
            android:value="AIzaSXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXGNc" /> 

Add directly your api key without ressource string