Google maps android api v2 application crash

I am using Eclipse helios and Android 4.1.2 I have completed the following documentation https://docs.google.com/document/pub?id=19nQzvKP-CVLd7_VrpwnHfl-AE9fjbJySowONZZtNHzw and made the encoding exactly as described in the tutorial. When I launch my application in the emulator, it shows "This application will not work if you do not update the Google Play services", but on the real device, which is sony xperia, which has an updated version of the Google gaming services, it restrains "the application stopped work". Any help is appreciated.

This is my manifest

<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.emeterfinalapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_CORSE_LOCATION" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.example.emeterfinalapp.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.emeterfinalapp.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"/> <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.emeterfinalapp.EmeterMainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" android:theme="@style/FullscreenTheme" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.emeterfinalapp.EnterLocationActivity" android:label="@string/title_activity_enter_location" android:parentActivityName="com.example.emeterfinalapp.EmeterMainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.emeterfinalapp.EmeterMainActivity" /> </activity> <activity android:name="com.example.emeterfinalapp.SelectLocation" android:label="@string/title_activity_select_location" android:parentActivityName="com.example.emeterfinalapp.EnterMainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.emeterfinalapp.EnterMainActivity" /> </activity> </application> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my api key"/> </manifest> 

here is my main.xml

  <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=".SelectLocation" > <Button android:id="@+id/satellite_button" android:layout_width="250dp" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:layout_toRightOf="@+id/mapview_button" android:text="@string/satellitebuttontext" /> <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" android:layout_below="@+id/satellite_button"/> <LinearLayout android:id="@+id/zoom" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentBottom="true" android:layout_centerHorizontal="true" /> <Button android:id="@+id/mapview_button" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:text="@string/mapbuttontext" /> </RelativeLayout> 

here is my activity

  package com.example.emeterfinalapp; import android.os.Bundle; import android.support.v4.app.FragmentActivity; import com.google.android.gms.common.GooglePlayServicesUtil; import com.google.android.gms.maps.GoogleMap; import com.google.android.gms.maps.SupportMapFragment; public class SelectLocation extends FragmentActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_select_location); // Show the Up button in the action bar. getActionBar().setDisplayHomeAsUpEnabled(true); GooglePlayServicesUtil.isGooglePlayServicesAvailable(getApplicationContext()); GoogleMap map = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap(); } } 

I gave a link to the google_play_services lib to my project, added the google_play_service and android.support.v4 jar file in my lib .... Please, if I still have not noticed any of them, please contact ...

I have an api key that I added to maifest, see above edited it now ...

amd here is the error trace from my phone log

  I/ActivityManager( 282): Displayed com.example.emeterfinalapp/.EmeterMainActivity: +206ms I/ActivityManager( 282): Displayed com.example.emeterfinalapp/.EnterLocationActivity: +224ms W/InputDispatcher( 282): channel '2c3dbfd0 com.example.emeterfinalapp/com.example.emeterfinalapp.EmeterMainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8 E/InputDispatcher( 282): channel '2c3dbfd0 com.example.emeterfinalapp/com.example.emeterfinalapp.EmeterMainActivity (server)' ~ Channel is unrecoverably broken and will be disposed! W/InputDispatcher( 282): Attempted to unregister already unregistered input channel '2c3dbfd0 com.example.emeterfinalapp/com.example.emeterfinalapp.EmeterMainActivity (server)' W/InputDispatcher( 282): channel '2c504fb8 com.example.emeterfinalapp/com.example.emeterfinalapp.EnterLocationActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x8 E/InputDispatcher( 282): channel '2c504fb8 com.example.emeterfinalapp/com.example.emeterfinalapp.EnterLocationActivity (server)' ~ Channel is unrecoverably broken and will be disposed! W/InputDispatcher( 282): Attempted to unregister already unregistered input channel '2c504fb8 com.example.emeterfinalapp/com.example.emeterfinalapp.EnterLocationActivity (server)' 
+4
source share
2 answers

Whoo ... after I scratched my head for so long, I got a solution, first I debugged the real device using DDMS, following its documentation, which is fabulous, then I found the following error:

 12-12 15:08:29.458: E/AndroidRuntime(26382): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.emeterfinalapp/com.example.emeterfinalapp.SelectLocation}: android.view.InflateException: Binary XML file line #17: Error inflating class fragment 

and then after a few lines of code another error appeared that was an eye catcher

 12-12 15:08:29.458: E/AndroidRuntime(26382): Caused by: java.lang.RuntimeException: API key not found. Check that <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="your API key"/> is in the <application> element of AndroidManifest.xml 

and then I realized that my api key code is a child of the manifest of the non-application that the above error indicated, and then I fixed my manifest as follows

 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.emeterfinalapp" android:versionCode="1" android:versionName="1.0" > <uses-sdk android:minSdkVersion="11" android:targetSdkVersion="16" /> <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /> <uses-permission android:name="android.permission.ACCESS_CORSE_LOCATION" /> <uses-feature android:glEsVersion="0x00020000" android:required="true"/> <permission android:name="com.example.emeterfinalapp.permission.MAPS_RECEIVE" android:protectionLevel="signature"/> <uses-permission android:name="com.example.emeterfinalapp.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"/> <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.emeterfinalapp.EmeterMainActivity" android:configChanges="orientation|keyboardHidden|screenSize" android:label="@string/app_name" android:theme="@style/FullscreenTheme" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name="com.example.emeterfinalapp.EnterLocationActivity" android:label="@string/title_activity_enter_location" android:parentActivityName="com.example.emeterfinalapp.EmeterMainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.emeterfinalapp.EmeterMainActivity" /> </activity> <activity android:name="com.example.emeterfinalapp.SelectLocation" android:label="@string/title_activity_select_location" android:parentActivityName="com.example.emeterfinalapp.EnterMainActivity" > <meta-data android:name="android.support.PARENT_ACTIVITY" android:value="com.example.emeterfinalapp.EnterMainActivity" /> </activity> <meta-data android:name="com.google.android.maps.v2.API_KEY" android:value="my api key"/> </application> 

and then it was like scaling, and everything worked fine ... Debugging with a real device really helped ...

+8
source

I am using the Android Log Viewer (logcat) application to collect application logs from my phone and it seems to work very well.

0
source

All Articles