anuruddhika anuruddhika - 6 months ago 27
Android Question

Android map loading error

I'm new to android map development.I tried to add google map to my application.It was generated errors. Followings errors were occurred.

12-19 10:53:47.950: E/AndroidRuntime(4131): FATAL EXCEPTION: main
12-19 10:53:47.950: E/AndroidRuntime(4131): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.maptest/com.example.maptest.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2114)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2139)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.ActivityThread.access$700(ActivityThread.java:143)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1241)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.os.Handler.dispatchMessage(Handler.java:99)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.os.Looper.loop(Looper.java:137)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.ActivityThread.main(ActivityThread.java:4960)
12-19 10:53:47.950: E/AndroidRuntime(4131): at java.lang.reflect.Method.invokeNative(Native Method)
12-19 10:53:47.950: E/AndroidRuntime(4131): at java.lang.reflect.Method.invoke(Method.java:511)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1038)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:805)
12-19 10:53:47.950: E/AndroidRuntime(4131): at dalvik.system.NativeStart.main(Native Method)
12-19 10:53:47.950: E/AndroidRuntime(4131): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:710)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.view.LayoutInflater.rInflate(LayoutInflater.java:752)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.view.LayoutInflater.inflate(LayoutInflater.java:495)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:318)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.Activity.setContentView(Activity.java:1925)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.example.maptest.MainActivity.onCreate(MainActivity.java:12)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.Activity.performCreate(Activity.java:5203)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2078)
12-19 10:53:47.950: E/AndroidRuntime(4131): ... 11 more
12-19 10:53:47.950: E/AndroidRuntime(4131): Caused by: java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist. You must have the following declaration within the <application> element: <meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.maps.internal.q.v(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.maps.internal.q.u(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.maps.MapFragment$b.cE(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.maps.MapFragment$b.a(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.dynamic.a.a(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.app.Activity.onCreateView(Activity.java:4835)
12-19 10:53:47.950: E/AndroidRuntime(4131): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:686)
12-19 10:53:47.950: E/AndroidRuntime(4131): ... 21 more


This is the xml code.

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

<fragment
android:id="@+id/fragment1"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="145dp" />

</RelativeLayout>


This is the main activity code.

public class MainActivity extends Activity {

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}


This is the manifest code.

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

<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<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" />

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



<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"
android:required="false" />

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


I added google_play_service library as well.

Can any one help me to sove this error.

Answer
Caused by: java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist.  
You must have the following declaration within the <application> element:     
<meta-data android:name="com.google.android.gms.version" android:value="@integer/google_play_services_version" />

Your log telling you everything :

Add the version code of google play services inside <application> i.e. before </application> inside AndroidManifest.xml

<meta-data
            android:name="com.google.android.gms.version"
            android:value="@integer/google_play_services_version" />

Reference

Also move following code inside <application> i.e before </application> inside AndroidManifest.xml

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