Google Maps API 2 for Android “Unfortunately, application has stopped." - android

I am android beginner, I follow a tutorial and try to show the google map using android. and I've also checked the other similar questions asked here, but am still unable to load a map :
logcat:
12-29 14:16:53.025: E/AndroidRuntime(4499): FATAL EXCEPTION: main
12-29 14:16:53.025: E/AndroidRuntime(4499): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gmapsapp/com.example.gmapsapp.MainActivity}: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4030500 but found 0. 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-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.ActivityThread.access$600(ActivityThread.java:140)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.os.Handler.dispatchMessage(Handler.java:99)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.os.Looper.loop(Looper.java:137)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.ActivityThread.main(ActivityThread.java:4898)
12-29 14:16:53.025: E/AndroidRuntime(4499): at java.lang.reflect.Method.invokeNative(Native Method)
12-29 14:16:53.025: E/AndroidRuntime(4499): at java.lang.reflect.Method.invoke(Method.java:511)
12-29 14:16:53.025: E/AndroidRuntime(4499): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
12-29 14:16:53.025: E/AndroidRuntime(4499): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
12-29 14:16:53.025: E/AndroidRuntime(4499): at dalvik.system.NativeStart.main(Native Method)
12-29 14:16:53.025: E/AndroidRuntime(4499): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4030500 but found 0. 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-29 14:16:53.025: E/AndroidRuntime(4499): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
12-29 14:16:53.025: E/AndroidRuntime(4499): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
12-29 14:16:53.025: E/AndroidRuntime(4499): at com.example.gmapsapp.MainActivity.servicesOK(MainActivity.java:40)
12-29 14:16:53.025: E/AndroidRuntime(4499): at com.example.gmapsapp.MainActivity.onCreate(MainActivity.java:22)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.Activity.performCreate(Activity.java:5206)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
12-29 14:16:53.025: E/AndroidRuntime(4499): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
12-29 14:16:53.025: E/AndroidRuntime(4499): ... 11 more
manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gmapsapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="17" />
<permission
android:name="com.example.gmapsapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.gmapsapp.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" >
<activity
android:name="com.example.gmapsapp.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>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="mykey"/>
</application>
</manifest>
MainActivity
package com.example.gmapsapp;
import com.google.android.gms.common.ConnectionResult;
import com.google.android.gms.common.GooglePlayServicesUtil;
import com.google.android.gms.maps.GoogleMap;
import android.app.Dialog;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.widget.Toast;
public class MainActivity extends FragmentActivity {
private static final int GPS_ERRORDIALOG_REQUEST = 9001;
GoogleMap mMap;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (servicesOK()) {
Toast.makeText(this, "Ready to map!", Toast.LENGTH_SHORT).show();
setContentView(R.layout.activity_map);
}
else {
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;
}
public boolean servicesOK() {
int isAvailable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (isAvailable == ConnectionResult.SUCCESS) {
return true;
}
else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) {
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable, this, GPS_ERRORDIALOG_REQUEST);
dialog.show();
}
else {
Toast.makeText(this, "Can't connect to Google Play services", Toast.LENGTH_SHORT).show();
}
return false;
}
}
activity_map
<?xml version="1.0" encoding="utf-8"?>
<fragment xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:map="http://schemas.android.com/apk/res-auto"
android:id="#+id/map"
android:name="com.google.android.gms.maps.SupportMapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent" />

Edit your application's AndroidManifest.xml file, and add the following declaration within the element. This embeds the version of Google Play services that the app was compiled with.
This is a new requirement as of the updated google play services which is rev 13 i guess.
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
https://developers.google.com/maps/documentation/android/start#getting_the_google_maps_android_api_v2
There is no need for
<permission
android:name="com.example.gmapsapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
and this
<uses-permission android:name="com.example.gmapsapp.permission.MAPS_RECEIVE"/>
Refer Specifying permission in the above link

try to put
<meta-data
android:name="com.google.android.gms.version"
android:value="key" />
inside your application tag, in AndroidManifest.xml

Related

LOG CAT Error on Google Maps API using basic tutorial

I submitted an similar question earlier on a more advanced project, so I thought I would simplify things by using the maps API tutorial provided by google to try and replicate the error I was getting, and I get the same error! Good and bad, at least I know it's not my project causing the error.
Now I just need to figure out why I am getting this error! I am new to programming but I followed this tutorial here verbatum:
https://developers.google.com/maps/documentation/android/start
Here is the error I am getting:
03-24 20:47:03.244: E/AndroidRuntime(6250): FATAL EXCEPTION: main
03-24 20:47:03.244: E/AndroidRuntime(6250): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.test/com.example.test.MainActivity}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2211)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2261)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.ActivityThread.access$600(ActivityThread.java:141)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1256)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.os.Handler.dispatchMessage(Handler.java:99)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.os.Looper.loop(Looper.java:137)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.ActivityThread.main(ActivityThread.java:5103)
03-24 20:47:03.244: E/AndroidRuntime(6250): at java.lang.reflect.Method.invokeNative(Native Method)
03-24 20:47:03.244: E/AndroidRuntime(6250): at java.lang.reflect.Method.invoke(Method.java:525)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
03-24 20:47:03.244: E/AndroidRuntime(6250): at dalvik.system.NativeStart.main(Native Method)
03-24 20:47:03.244: E/AndroidRuntime(6250): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.view.LayoutInflater.inflate(LayoutInflater.java:469)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.view.LayoutInflater.inflate(LayoutInflater.java:397)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.view.LayoutInflater.inflate(LayoutInflater.java:353)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:267)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.Activity.setContentView(Activity.java:1895)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.example.test.MainActivity.onCreate(MainActivity.java:11)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.Activity.performCreate(Activity.java:5133)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1087)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2175)
03-24 20:47:03.244: E/AndroidRuntime(6250): ... 11 more
03-24 20:47:03.244: E/AndroidRuntime(6250): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. 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" />
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.maps.internal.q.v(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.maps.internal.q.u(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.maps.MapFragment$b.ex(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.maps.MapFragment$b.a(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.dynamic.a.a(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.maps.MapFragment.onInflate(Unknown Source)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.app.Activity.onCreateView(Activity.java:4745)
03-24 20:47:03.244: E/AndroidRuntime(6250): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:689)
03-24 20:47:03.244: E/AndroidRuntime(6250): ... 20 more
Here is my simple MainActivity.java
package com.example.test;
import android.app.Activity;
import android.os.Bundle;
public class MainActivity extends Activity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
here is my simple activity_main.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"
android:name="com.example.test.MainActivity"/>
Here is my manifest:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.test"
android:versionCode="1"
android:versionName="1.0" >
<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"/>
<!-- The following two permissions are not required to use
Google Maps Android API v2, but are recommended. -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="19" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name="com.example.test.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>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="HIDDEN"/>
</application>
</manifest>
The only thing I can think of is that my manifest file is improperly set up. But I followed the instructions and Eclipse didn't give me an error on it. I am up in arms here trying to figure this out. Any help would be appreciated.
Your logcat clearly said
Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. 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" />
03-24 20:47:03.244: E/AndroidRuntime(6250): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
Add the Google Play services version to your app's manifest
Edit your application's AndroidManifest.xml file, and add the
following declaration within the element. This embeds the version of
Google Play services that the app was compiled with.
You need to add <meta-data> under <application> tag into your AndroidManifest.xml
....<application>
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
This is because latest google play services requires a version name, which is to be mentioned using <meta-data .. /> inside AndroidManifest.xml
....<application>
..............
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="Key" />
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
Also Extends your Activity to FragmentActivity
MainActivity extends FragmentActivity
You need to add the below as a child of application tag as mentioned in the other answer.
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Also you have
<uses-sdk
android:minSdkVersion="8"
So change this
public class MainActivity extends Activity {
to
public class MainActivity extends FragmentActivity {
Since you use SupportMapFragment you need to use FragmentActivity which is the base class for support based fragments.
Also change this
class="com.google.android.gms.maps.SupportMapFragment"
android:name="com.example.test.MainActivity"/> // remove this
to
class="com.google.android.gms.maps.SupportMapFragment"/>
Put both meta tag with your API key....in between applicationTag.
Also add permission tag with your package name which you use in Google console in your AndroidManifest.xml.
<permission
android:name="com.xyz.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.xyz.permission.MAPS_RECEIVE"/>
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
.....
.....
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="Put Your API Key here"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
Extend your class activity to fragment activity use below
public class MainActivity extends FragmentActivity
Insted of this
public class MainActivity extends Activity
You are missing following lines in your Manifest file,
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Please write these lines before your MAP-API Key tag, inside the tag.
Once you will complete these changes you will get Fragment error as you are using latest version of Map but you are using Activity inside your code, So you need to change following as well,
Extends your Activity to FragmentActivity
MainActivity extends FragmentActivity

Error inflating class fragment on Google Maps V2

I develop an application and I need to see the Google Maps v2.
The main class is:
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.model.LatLng;
import com.google.android.gms.maps.model.Marker;
import com.google.android.gms.maps.model.MarkerOptions;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
import android.view.Menu;
import android.app.Activity;
public class MapsV2 extends FragmentActivity {
private GoogleMap mMap;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.mapsv2);
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
mMap.setMapType(GoogleMap.MAP_TYPE_SATELLITE);
final LatLng CIU = new LatLng(35.21843892856462, 33.41662287712097);
Marker ciu = mMap.addMarker(new MarkerOptions()
.position(CIU).title("My Office"));
}
#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_page_option_menu, menu);
return true;
}
}
And the XML is:
<?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"
android:name="com.app.reminder.MapsV2"/>
So, when I run it on my device I've got error message:
02-18 14:20:37.596: E/AndroidRuntime(30383): FATAL EXCEPTION: main
02-18 14:20:37.596: E/AndroidRuntime(30383): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.app.reminder/com.app.reminder.MapsV2}: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2100)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2125)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.ActivityThread.access$600(ActivityThread.java:140)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1227)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.os.Handler.dispatchMessage(Handler.java:99)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.os.Looper.loop(Looper.java:137)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.ActivityThread.main(ActivityThread.java:4898)
02-18 14:20:37.596: E/AndroidRuntime(30383): at java.lang.reflect.Method.invokeNative(Native Method)
02-18 14:20:37.596: E/AndroidRuntime(30383): at java.lang.reflect.Method.invoke(Method.java:511)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1006)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:773)
02-18 14:20:37.596: E/AndroidRuntime(30383): at dalvik.system.NativeStart.main(Native Method)
02-18 14:20:37.596: E/AndroidRuntime(30383): Caused by: android.view.InflateException: Binary XML file line #2: Error inflating class fragment
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.view.LayoutInflater.inflate(LayoutInflater.java:466)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.Activity.setContentView(Activity.java:1924)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.app.reminder.MapsV2.onCreate(MapsV2.java:22)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.Activity.performCreate(Activity.java:5206)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1083)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2064)
02-18 14:20:37.596: E/AndroidRuntime(30383): ... 11 more
02-18 14:20:37.596: E/AndroidRuntime(30383): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4132500 but found 0. 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" />
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.maps.internal.q.v(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.maps.internal.q.u(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.maps.MapsInitializer.initialize(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.maps.SupportMapFragment$b.eb(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.maps.SupportMapFragment$b.a(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.dynamic.a.a(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.dynamic.a.onInflate(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at com.google.android.gms.maps.SupportMapFragment.onInflate(Unknown Source)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:290)
02-18 14:20:37.596: E/AndroidRuntime(30383): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
02-18 14:20:37.596: E/AndroidRuntime(30383): ... 20 more
The manifest is:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.app.reminder"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="15" />
<permission
android:name="com.app.reminder.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.app.reminder.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:icon="#drawable/icon"
android:label="#string/app_name"
android:theme="#style/AppTheme"
android:name="com.app.reminder.InfoManager">
>
<activity
android:name="SplashScreen"
android:theme="#android:style/Theme.NoTitleBar" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="MapsV2"></activity><uses-library android:name="com.google.android.maps"
/>
<uses-library android:name="com.google.android.maps" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBDtXP5sYucD8z5pjaJFuvt43sLWOGzyuQ" />
<activity android:name="MapsV2"></activity>
</application>
</manifest>
I tried all the options in the answers in StackOverFlow.
The log is quite clear, you are missing this line in your manifest:
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
As you can read at the end of this line:
Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4132500 but found 0. 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" />
Also, take care to have the last version of Google Play services(version 13 or more), and not Google Play services for Froyo, who doesn't contain that parameter.
You should replace this
mMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
With
mMap = ((SupportMapFragment) getSupportFragmentManager()
.findFragmentById(R.id.map)).getMap();
Replace your Fragment
<fragment
android:id="#+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:name="com.google.android.gms.maps.MapFragment"/>
In manifest.xml
<uses-sdk
android:minSdkVersion="14"
android:targetSdkVersion="19" />
Activity class
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
GoogleMap gMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();

Google play services

I am trying to check google play services but it gives error.
Here is my manifest file.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.gmapapp"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="8"
android:targetSdkVersion="18" />
<permission
android:name="com.example.gmapapp.permission.MAPS_RECEIVE"
android:protectionLevel="signature"/>
<uses-permission android:name="com.example.gmapapp.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" >
<activity
android:name="com.example.gmapapp.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>
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="GOOGLE_API_KEY"/>
</application>
</manifest>
Here is my main activity.
public class MainActivity extends Activity {
private static final int GPS_ERRORDIALOG_REQUEST = 9001;
GoogleMap mMap;
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (servicesOK()) {
Toast.makeText(this, "Google play services successfully connected.", Toast.LENGTH_SHORT).show();
}
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;
}
public boolean servicesOK(){
int isAvailable = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if (isAvailable == ConnectionResult.SUCCESS) {
return true;
}else if (GooglePlayServicesUtil.isUserRecoverableError(isAvailable)) {
Dialog dialog = GooglePlayServicesUtil.getErrorDialog(isAvailable, this, GPS_ERRORDIALOG_REQUEST);
dialog.show();
}else{
Toast.makeText(this, "Can't connect to google play services.", Toast.LENGTH_SHORT).show();
}
return false;
}
}
My log cat errors
02-15 19:22:58.070: E/AndroidRuntime(7499): FATAL EXCEPTION: main
02-15 19:22:58.070: E/AndroidRuntime(7499): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gmapapp/com.example.gmapapp.MainActivity}: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. 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" />
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1956)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.ActivityThread.access$600(ActivityThread.java:123)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.os.Handler.dispatchMessage(Handler.java:99)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.os.Looper.loop(Looper.java:137)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.ActivityThread.main(ActivityThread.java:4424)
02-15 19:22:58.070: E/AndroidRuntime(7499): at java.lang.reflect.Method.invokeNative(Native Method)
02-15 19:22:58.070: E/AndroidRuntime(7499): at java.lang.reflect.Method.invoke(Method.java:511)
02-15 19:22:58.070: E/AndroidRuntime(7499): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:787)
02-15 19:22:58.070: E/AndroidRuntime(7499): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:554)
02-15 19:22:58.070: E/AndroidRuntime(7499): at dalvik.system.NativeStart.main(Native Method)
02-15 19:22:58.070: E/AndroidRuntime(7499): Caused by: java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. 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" />
02-15 19:22:58.070: E/AndroidRuntime(7499): at com.google.android.gms.common.GooglePlayServicesUtil.n(Unknown Source)
02-15 19:22:58.070: E/AndroidRuntime(7499): at com.google.android.gms.common.GooglePlayServicesUtil.isGooglePlayServicesAvailable(Unknown Source)
02-15 19:22:58.070: E/AndroidRuntime(7499): at com.example.gmapapp.MainActivity.servicesOK(MainActivity.java:36)
02-15 19:22:58.070: E/AndroidRuntime(7499): at com.example.gmapapp.MainActivity.onCreate(MainActivity.java:21)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.Activity.performCreate(Activity.java:4465)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
02-15 19:22:58.070: E/AndroidRuntime(7499): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1920)
02-15 19:22:58.070: E/AndroidRuntime(7499): ... 11 more
Add the following to your AndroidManifest.xml, within the <application> tag:
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
The log actually is quite explanatory.
Your log cat only clearly saying that:
java.lang.IllegalStateException: The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4242000 but found 0. 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" />
so you just add it in application element in Android manifest.

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.
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>
You can try this code, if you know the location name you want to display in map. It worked for me.
Geocoder geocoder;
List<Address> addresses = null;
geocoder = new Geocoder(this, Locale.getDefault());
try {
//getFromLocationName returns array of address, it takes 2 parameter one place name and count of result
addresses = geocoder.getFromLocationName("Place name", 1);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
latitude = addresses.get(0).getLatitude();
longitude = addresses.get(0).getLongitude();
String label = "SomePlace";
String in = "geo:" + latitude + "," + longitude;
String query = latitude + "," + longitude + "(" + label + ")";
String ey = Uri.encode(query);
String uriLoc = in + "?q=" + ey+ "&z=16";
Log.d(uriLoc, "no log");
Uri uri = Uri.parse(uriLoc);
Intent intent = new Intent(android.content.Intent.ACTION_VIEW, uri);
startActivity(intent);
Please check this line from your log.
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 tag
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.map">
<!--
The ACCESS_COARSE/FINE_LOCATION permissions are not required to use
Google Maps Android API v2, but you must specify either coarse or fine
location permissions for the 'MyLocation' functionality.
-->
<permission
android:name="com.example.map.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="android.permission.INTERNET"/>
<!--to access information about networks-->
<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"/>
<!--to access approximate location through network location providers-->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<!--to get precise location through GPS location provider-->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="com.example.map.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:supportsRtl="true"
android:theme="#style/AppTheme">
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="#string/google_maps_key" />
<activity
android:name=".MainActivity"
android:label="#string/title_maps">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
</manifest>

my google map v2 test apps crashes

i am newcomer on stackoverflow and
i have google map test project that use from
here
and i do just like tutorial but apps crashes.
i done every single steps in tutorial and get android key, added library and more:
my similar problem is this link:
here
but it don't have any answer that works.
i completly delete eclips, uninstall java JDK and JRE and even my whole system java. but the app is crashes.
can any body help me on this? thank you very much
here my code:
import com.google.android.gms.maps.GoogleMap;
import com.google.android.gms.maps.MapFragment;
import com.google.android.gms.maps.SupportMapFragment;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.Toast;
import android.support.v4.app.FragmentActivity;
import android.support.v4.app.NavUtils;
public class MainActivity extends FragmentActivity {
private GoogleMap googleMap;
#Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
try {
// Loading map
initilizeMap();
} catch (Exception e) {
e.printStackTrace();
}
}
#Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
private void initilizeMap() {
if (googleMap == null) {
//googleMap = ((MapFragment) getFragmentManager().findFragmentById(R.id.map)).getMap();
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
// check if map is created successfully or not
if (googleMap == null) {
Toast.makeText(getApplicationContext(),
"Sorry! unable to create maps", Toast.LENGTH_SHORT)
.show();
}
}
}
}
and manifest file is:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.test.maptest"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="com.test.maptest.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.test.maptest.permission.MAPS_RECEIVE" />
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="16" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="com.google.android.providers.gsf.permission.READ_GSERVICES" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<!-- Required to show current location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<!-- Required OpenGL ES 2.0. for Maps V2 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<application
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".MainActivity"
android:label="#string/title_activity_main" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
<!-- Goolge API Key -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBYju6h2BWvZOaSDQpe5f9tv6fJsZy6cY8" />
</manifest>
and layout is:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="#+id/map"
android:name="com.google.android.gms.maps.MapFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
</RelativeLayout>
and this is logcat:
11-25 14:04:50.663: E/Trace(1411): error opening trace file: No such file or directory (2)
11-25 14:04:50.853: D/AndroidRuntime(1411): Shutting down VM
11-25 14:04:50.853: W/dalvikvm(1411): threadid=1: thread exiting with uncaught exception (group=0x40a13300)
11-25 14:04:50.873: E/AndroidRuntime(1411): FATAL EXCEPTION: main
11-25 14:04:50.873: E/AndroidRuntime(1411): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.ariagostar.maptest/com.ariagostar.maptest.MainActivity}: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2059)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2084)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.ActivityThread.access$600(ActivityThread.java:130)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1195)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.os.Handler.dispatchMessage(Handler.java:99)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.os.Looper.loop(Looper.java:137)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.ActivityThread.main(ActivityThread.java:4745)
11-25 14:04:50.873: E/AndroidRuntime(1411): at java.lang.reflect.Method.invokeNative(Native Method)
11-25 14:04:50.873: E/AndroidRuntime(1411): at java.lang.reflect.Method.invoke(Method.java:511)
11-25 14:04:50.873: E/AndroidRuntime(1411): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
11-25 14:04:50.873: E/AndroidRuntime(1411): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
11-25 14:04:50.873: E/AndroidRuntime(1411): at dalvik.system.NativeStart.main(Native Method)
11-25 14:04:50.873: E/AndroidRuntime(1411): Caused by: android.view.InflateException: Binary XML file line #6: Error inflating class fragment
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.view.LayoutInflater.rInflate(LayoutInflater.java:746)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.view.LayoutInflater.inflate(LayoutInflater.java:489)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.view.LayoutInflater.inflate(LayoutInflater.java:396)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.view.LayoutInflater.inflate(LayoutInflater.java:352)
11-25 14:04:50.873: E/AndroidRuntime(1411): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:256)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.Activity.setContentView(Activity.java:1867)
11-25 14:04:50.873: E/AndroidRuntime(1411): at com.ariagostar.maptest.MainActivity.onCreate(MainActivity.java:25)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.Activity.performCreate(Activity.java:5008)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1079)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2023)
11-25 14:04:50.873: E/AndroidRuntime(1411): ... 11 more
11-25 14:04:50.873: E/AndroidRuntime(1411): Caused by: java.lang.ClassCastException: com.google.android.gms.maps.MapFragment cannot be cast to android.support.v4.app.Fragment
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.support.v4.app.Fragment.instantiate(Fragment.java:388)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.support.v4.app.Fragment.instantiate(Fragment.java:363)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.support.v4.app.FragmentActivity.onCreateView(FragmentActivity.java:264)
11-25 14:04:50.873: E/AndroidRuntime(1411): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:676)
Change
public class MainActivity extends FragmentActivity {
to
public class MainActivity extends Activity {
Change this
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
to
googleMap = ((MapFragment)getFragmentManager().findFragmentById(R.id.map)).getMap();
You also need the below in application tag in manifest
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
which is a requirement of google play services rev 13
Edit:
Move
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyBYju6h2BWvZOaSDQpe5f9tv6fJsZy6cY8" />
inside application tag in manifest
Try with this.
Your MainActivity
private void initilizeMap() {
if (googleMap == null) {
googleMap = ((SupportMapFragment) getSupportFragmentManager().findFragmentById(R.id.map)).getMap();
// Valida si el mapa no se creo correctamente
if (googleMap == null) {
Toast.makeText(getApplicationContext(), "Sorry! el mapa no pudo ser cargado", Toast.LENGTH_SHORT)
.show();
}
}
}
In your layout this
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent" >
<fragment
android:id="#+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
class="com.google.android.gms.maps.SupportMapFragment" />
In the manifest, i used this lines in MAC, because in Windows works correctly works without them
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
I had a similar problemt. For me adding:
import com.google.android.gms.maps.SupportMapFragment;
And changing the xml to
<fragment
android:name="com.google.android.gms.maps.SupportMapFragment"
android:id="#+id/map"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_below="#+id/header" />
resolved the problem. I hope you resolve it too!

Categories

Resources