Google Map Android Api V2 Sample Code not working

38,003

Solution 1

Please check..

  1. check if the "libs" folder containing the "android-support-v4.jar" exists in your project.

    "android-support-v4.jar" is located in "/extras/android/compatibility/v4/android-support-v4.jar" under your "android-sdk" drectory.

  2. Before running your project, you must set your project Build target to "Google APIs", not Android x.x. version : Select your project and click Project > Properties > Project Build Target in Eclipse and select any "Google APIs ", and then run your project on your phone. If you use the emulator, also MUST set the AVD of the emulator to the any "Google APIs ".

  3. Once more, you don't need to create the new Google Maps API key in order to test your project, Just use the default provided API key, which is shown as "Key for browser apps (with referers) "in your Google APIs Console.

  4. Finally, the most important is to add Google Play services as an Android library project as follows:

    Select File > Import > Android > Existing Android Code Into Workspace and click Next. Select Browse..., enter /extras/google/google_play_services/libproject/google-play-services_lib, and click Finish.

Solution 2

I have compiled your code and I get maps working. I think I discovered the problem: wrong credentials got cached.

The first time I ran your code, it was using wrong credentials. Although I have fixed them, I was still getting the "authorization failure" error. Then I simply uninstalled the app, ran it again and then maps got working.

Apparently Google Maps credentials are cached somewhere. Simpling running the app again does not overwrite them.

That also explains why I only got maps working after running my other app using Debug As (not Run As)...

I had the same problem as you and I got maps working only when running the application on a real device through "Debug As > Android Application".

I'm a newbie in Android development. I don't know if this is just the way things are or we are missing something :)

Solution 3

A common reason for this is not registering the correct keys in your Google API console. Specifically, if you are launching directly from Eclipse, your app is not being signed with your release key, but instead with your debug key. Make sure you register both key fingerprints + package names in your console. It helps to check you have your package names correct, too.

Here is a link to how to find your debug certificate fingerprint. Look under the section 'Displaying the debug certificate fingerprint'

Solution 4

Got this problem because I had restriction enabled for my API key in Google Console.

enter image description here

Make sure it is set to none and then try again

Solution 5

Please use the Browser key when you download and run the sample project from the internet. Android key will not work in that case and will give this error.

"Could not contact to server. Authorization Failed"

Go to your API Console and get your browser key

Thanks

Let me know if you have any queries regarding Google Maps Api V2

Share:
38,003

Related videos on Youtube

Cool Jatt
Author by

Cool Jatt

Learner

Updated on July 14, 2022

Comments

  • Cool Jatt
    Cool Jatt over 1 year

    I had tried to use the Google Map Sample Code before which was provided in Google_Play_SERVICE/SAMPLE by using all the available options and it showed the below Log.

    01-14 17:58:39.773: E/Google Maps Android API(13114): Authorization failure.

    It showed me the blank screen for all of the sample Map options.

    Now I created a new Project and here is its complete code:-

    Activity.java

    public class MapActivity extends FragmentActivity
    {
        private Context context = this;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_map);
    
            GoogleMap gMap = ((SupportMapFragment)getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
    
            int result = GooglePlayServicesUtil.isGooglePlayServicesAvailable(context);
            Log.e("Maps", "Result int value::" + result);
            switch (result) {
            case ConnectionResult.SUCCESS:
                Log.e("Maps", "RESULT:: SUCCESS");          
                break;
    
            case ConnectionResult.DEVELOPER_ERROR:
                Log.e("Maps", "RESULT:: DE");           
                break;
    
            case ConnectionResult.INTERNAL_ERROR:
                Log.e("Maps", "RESULT:: IE");           
                break;
    
            case ConnectionResult.INVALID_ACCOUNT:
                Log.e("Maps", "RESULT:: IA");           
                break;
    
            case ConnectionResult.NETWORK_ERROR:
                Log.e("Maps", "RESULT:: NE");           
                break;
    
            case ConnectionResult.RESOLUTION_REQUIRED:
                Log.e("Maps", "RESULT:: RR");           
                break;
    
            case ConnectionResult.SERVICE_DISABLED:
                Log.e("Maps", "RESULT:: SD");           
                break;
    
            case ConnectionResult.SERVICE_INVALID:
                Log.e("Maps", "RESULT:: SI");           
                break;
    
            case ConnectionResult.SERVICE_MISSING:
                Log.e("Maps", "RESULT:: SM");           
                break;
            case ConnectionResult.SERVICE_VERSION_UPDATE_REQUIRED:
                Log.e("Maps", "RESULT:: SVUR");         
                break;
            case ConnectionResult.SIGN_IN_REQUIRED:
                Log.e("Maps", "RESULT:: SIR");          
                break;      
    
            default:
                break;
            }
            gMap.setMapType(GoogleMap.MAP_TYPE_NORMAL);
            gMap.setMyLocationEnabled(true);
            Log.e("Maps", "------EOC-------");
        }
    }
    

    activity_map.xml

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

    Manifest.xml

    <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
        package="net.dottech.map"
        android:versionCode="1"
        android:versionName="1.0" >
    
        <uses-sdk
            android:maxSdkVersion="17"
            android:minSdkVersion="8"
            android:targetSdkVersion="17" />
    
        <uses-feature
            android:glEsVersion="0x00020000"
            android:required="true" />
    
        <permission
            android:name="net.dottech.map.permission.MAPS_RECEIVE"
            android:protectionLevel="signature" />
    
        <uses-permission android:name="net.dottech.map.permission.MAPS_RECEIVE" />
        <uses-permission android:name="android.permission.INTERNET" />
        <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" />
    
        <application
            android:allowBackup="true"
            android:icon="@drawable/ic_launcher"
            android:label="@string/app_name"
            android:theme="@style/AppTheme" >
            <activity
                android:name="net.dottech.map.MapActivity"
                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="removed" />
        </application>
    
    </manifest>
    

    LOG

    01-21 13:09:09.243: E/Maps(449): Result int value::0
    01-21 13:09:09.243: E/Maps(449): RESULT:: SUCCESS
    01-21 13:09:09.243: E/Maps(449): ------EOC-------
    01-21 13:09:09.248: D/LocationManagerService(1852): gps location requested by an application
    01-21 13:09:09.253: D/SensorManager(449): registerListener :: handle = 0  name= K3DH 
    Acceleration Sensor delay= 20000 Listener= maps.i.a@41a054f8
    01-21 13:09:09.353: D/(449): Device driver API match
    01-21 13:09:09.353: D/(449): Device driver API version: 10
    01-21 13:09:09.353: D/(449): User space API version: 10 
    01-21 13:09:09.353: D/(449): mali: REVISION=Linux-r2p4-02rel0 BUILD_DATE=Fri May  4 10:32:42 KST 2012
    01-21 13:09:12.398: D/Sensors(449): Remain listener = Sending .. normal delay 200ms
    01-21 13:09:12.398: I/Sensors(449): sendDelay --- 200000000
    01-21 13:09:12.398: I/Sensors(1852): setDelay :: handle = 0   delay = 200000000
    01-21 13:09:12.398: D/SensorManager(449): JNI - sendDelay
    01-21 16:14:17.835: E/Google Maps Android API(12168): Failed to load map.  Could not contact Google servers.
    

    Screenshot

    Google Map Android Api V2 Example tried, no success

    This is the result, Blank screen with zoom options, No map in MapView.

    I have followed each and every step mentioned at:-

    1.) Tutorial

    2.) Google Map Android Api V2

    • Cool Jatt
      Cool Jatt almost 11 years
      @CommonsWare: I have tried it on Samsung Galaxy Young, Samsung Galaxy Note 2 & Micromax A 52.
    • Yaroslav Mytkalyk
      Yaroslav Mytkalyk almost 11 years
      Are you sure you enabled "Google Maps Android API v2" service in Google console?
    • Yaroslav Mytkalyk
      Yaroslav Mytkalyk almost 11 years
      Are you sure it's "Google Maps Android API v2", not "Google Maps API v2"? I had a similar problem and that was the reason.
  • Harpreet
    Harpreet almost 11 years
    @lagreen I have surely done all those steps but its not working, it giving "Authorization Failure" Log.
  • iagreen
    iagreen almost 11 years
    @Harpreet are you getting ConnectionResult.SUCCESS in response to GooglePlayServicesUtil.isGooglePlayServicesAvailable(this)?
  • Cool Jatt
    Cool Jatt almost 11 years
    @lagreen: Please check the whole question again, I have added the complete code.
  • Cool Jatt
    Cool Jatt almost 11 years
    I have checked the Google Play Service version, it 2.0.12. Code is up-to-date from all scenarios and scenes. I just figured it out, its giving LOG :: "01-21 16:14:17.835: E/Google Maps Android API(12168): Failed to load map. Could not contact Google servers."
  • Harshal Kshatriya
    Harshal Kshatriya over 10 years
    Thanks, third point helped me. I was trying earlier with Key for Android apps (with certificates) but it didnt work.
  • ambit
    ambit over 10 years
    Have read many questions on SO related to this.. But this is the best answer I came across. And it worked for me as well..
  • Vijay Boyapati
    Vijay Boyapati over 7 years
    This was by far the clearest explanation I found for why maps were not showing up in debug mode but were in production. For most people it would be the other way around, but I had taken over development of an app that was already running in production. I basically had to register the SHA1 fingerprint from my ~/.android/debug.keystore file in the google developer console then put the key from the developer console in my manifest file. After doing this I was able to see the map show up when deploying in debug mode (using Android Studio)

Related