Yesterday API 19 came out so I upgraded SDK and other (including Google Play Services)
now this method:
private boolean isGooglePlayInstalled(){
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
if(status == ConnectionResult.SUCCESS){
return true;
}else{
((Dialog)GooglePlayServicesUtil.getErrorDialog(status, this,10)).show();
}
return false;
}
Throws at line int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
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" />
How to fix that? I didnt have element "com.google.android.gms.version" in manifest before and it worked.
This is my manifest:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sabatsoft.driveit"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="16"
android:targetSdkVersion="19" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.WAKE_LOCK" />
<uses-permission android:name="android.permission.WRITE_SETTINGS" />
<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" >
<activity
android:name="com.sabatsoft.driveit.activity.Start"
android:label="#string/app_name"
android:screenOrientation="landscape"
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>
<!-- other activities -->
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIza*********************************1MZI" />
</application>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
</manifest>
This worked for me:
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Place this at the end of your manifest, after your Map API key meta-data tag. Since you check for GPlayServices availability in your onCreate method, such as:
// Check status of Google Play Services
int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
// Check Google Play Service Available
try {
if (status != ConnectionResult.SUCCESS) {
GooglePlayServicesUtil.getErrorDialog(status, this, RQS_GooglePlayServices).show();
}
} catch (Exception e) {
Log.e("Error: GooglePlayServiceUtil: ", "" + e);
}
...then once you click the dialog box to update GPlayServices, you will be brought to the GPlayStore. Usually, I uninstall from the GPlayStore menu, then the option to update will be available. It should work after that.
Package contents comparison
The "google_play_services_froyo" lib project contains these com.google.android.gms packages:
appstate
auth
common
dynamic
games
gcm
internal
location
maps
panorama
plus
On the other hand, the new (rev. 13) "google_play_services" lib project has some additional packages within com.google.android.gms:
ads
appstate
auth
common
dynamic
games
gcm
internal
location
maps
panorama
plus
wallet
Plus, this package is found in the new (rev. 13) "google_play_services": com.google.ads!
AndroidManifext.xml comparison
The old (rev. 12) "google_play_services" had:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.gms"
android:versionCode="3265130"
android:versionName="3.2.65 (834000-30)" >
<uses-sdk android:minSdkVersion="8"/>
</manifest>
The newly introduced "google_play_services_froyo" lib project has:
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.android.gms"
android:versionCode="3225130"
android:versionName="3.2.25 (761454-30)" >
<uses-sdk android:minSdkVersion="8"/>
</manifest>
Conclusion
The "google_play_services_froyo" is functionally the same as the old (rev. 12) "google_play_services" lib project, so if you just want to keep your app compatible and don't care about the new APIs, just import the "google_play_services_froyo" in your project and you're good to go.
On the other hand, if you wanted to use the new (rev. 13) "google_play_services" lib project, once you import it, you have to add this to your apps manifest:
<application
...
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
Hope this helped :)
That happened to me yesterday. I just needed to add this in the manifest:
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
I solved my issue of the same with
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
you have to add the following line in manifest file.
i hope it will work.
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
I faced this error because I referenced the original copy from SDK directory. Make sure that you first copy the library to android workspace and only reference it. In eclipse you can do it by checking "Copy projects into workspace" while importing the project.
Related
I'm trying to build my app for Android, but I keep getting these error messages which are on the picture. Since I'm beginner in programming, I have no idea what is wrong. Two manifest files are following: 1)
<?xml version="1.0" encoding="utf-8"?>
<!--
This Google Mobile Ads plugin library manifest will get merged with your
application's manifest, adding the necessary activity and permissions
required for displaying ads.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.google.unity"
android:versionName="1.0"
android:versionCode="1">
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="19" />
<!-- Google Mobile Ads Permissions -->
<uses-permission android:name="android.permission.INTERNET"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
<!-- Uncomment to add billing for in-app purchase ads -->
<!--<uses-permission android:name="com.android.vending.BILLING"/> -->
<application>
<!-- Denote the referenced Google Play services version -->
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<!-- Google Mobile Ads Activity -->
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="#android:style/Theme.Translucent" />
<!-- InAppPurchase Activity -->
<activity android:name="com.google.android.gms.ads.purchase.InAppPurchaseActivity"
android:theme="#style/Theme.IAPTheme"/>
</application>
</manifest>
2)
<?xml version="1.0" encoding="utf-8"?>
<!--
This Google Mobile Ads plugin library manifest will get merged with your
application's manifest, adding the necessary activity and permissions
required for displaying ads.
-->
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.admob.demo"
android:versionName="1.0"
android:versionCode="1">
<uses-sdk android:minSdkVersion="9"
android:targetSdkVersion="19" />
<!-- Google Mobile Ads Permissions -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<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" />
<uses-permission android:name="android.permission.ACCESS_COARSE_UPDATES" />
<!-- Uncomment to add billing for in-app purchase ads -->
<!--<uses-permission android:name="com.android.vending.BILLING"/> -->
<application>
<activity
android:name="com.unity3d.player.UnityPlayerActivity"
android:label="activetitle" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<!-- Denote the referenced Google Play services version -->
<meta-data android:name="com.google.android.gms.version"
android:value="8115000" />
<!-- Google Mobile Ads Activity -->
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="#android:style/Theme.Translucent" />
</application>
</manifest>
What I tried, was to change minimum API level from build settings, but it didn't help. I will also add screen from build settings, if you know how to fix it, then I would be really grateful!
build settings are these
errors are these
You have repeated lines in the manifest that can cause the manifest merge to fail as it doesn't know which one to keep. If the error persists, please copy the full error message in your post.
Remove this from your manifest 2:
<meta-data android:name="com.google.android.gms.version"
android:value="8115000" />
<!-- Google Mobile Ads Activity -->
<activity
android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"
android:theme="#android:style/Theme.Translucent" />
EDIT:
To fix the problem with this plugin https://github.com/googleads/googleads-mobile-unity
The easiest way is to go to Assets -> Play Services Resolver -> Android Resolver -> Resolve client jars
That should update all your libraries and dependencies of your project, please make sure you have latest version of the plugin which is 3.2.0 as of today.
I'm working with Android Studio 1.2.2 and I don't know how to solve this problem:
error: package com.google.android.maps does not exist.
I added these lines to may build.gradle file under dependencies:
compile 'com.google.maps:google-maps-services:0.1.3'
compile 'com.google.android.gms:play-services:6.5.87'
But the same error is appearing when I try to build the project.
You package name seems not correct, it should be:
import com.google.android.gms.maps.*;
You need to follow the link here, or video here to setup the map.
Make sure you compile latest play service:
compile 'com.google.android.gms:play-services:7.5.0'
and include permission, feature, mata-data(apikey and gems version) in you AndroidManifest :
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.bojie.map_basic_android" >
<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" />
<!--
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" />
<application
android:allowBackup="true"
android:icon="#mipmap/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name=".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.geo.API_KEY"
android:value="YOUR API KEY" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
</manifest>
For demo project you can refer here.
Please ensure that you have downloaded and installed the Google Play services SDK in your Android SDK Manager
Also you can try declaring this in your Manifest.xml
<uses-library android:name="com.google.android.maps" />
I am developing a google maps app for android.
But, somehow my application crashes giving an error like :
java.lang.IllegalStateException: A required meta-data tag in your app's AndroidManifest.xml does not exist.
This is what my AndroidManifest.xml looks like:-
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.locations"
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.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"/>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<permission android:name ="com.example.locations.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission>
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<activity
android:name="com.example.locations.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="AIzaSyAZhJllASbTnrFta8hj55shKydSi0ks824"/>
</application>
</manifest>
Log:-
01-09 12:29:35.249: E/AndroidRuntime(7448): 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" />
I am using google maps for this app
How can i resolve this?
Missing the below in application tag of manifest. This ia new requirement as of updated google play services.
Check the topic Add the Google Play services version to your app's manifest #
https://developers.google.com/maps/documentation/android/start
<meta-data android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Remove this
<permission android:name ="com.example.locations.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission>
not required
Google Map V2 add new feature in AndroidManifest.xml. You will need to add this metatag within application tag
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Try to add following meta-data tag on Manifest file it's working fine.
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
As Google Map V2 use use Google Play services you need to keep it updated.
Latest google play services requires a version name, which is to be mentioned using <meta-data .. /> inside AndroidManifest.xml. This can be solved by both of the below ways_
1. Add following meta-data inside application tag of your AndroidManifest.xml
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
this value is there in your Google Play services library(res -> values -> version.xml)
2. Directly add the version code like
<meta-data android:name="com.google.android.gms.version" android:value="4030500" />
4030500 is version code which is stored inside
google-play-services_lib>res>values>version.xml
Like
<integer name="google_play_services_version">4030500</integer>
Try cleaning your project (select project>project tab>clean)
I solved my problem with this. Cleaning is the solution for most problems.
There is no need for permission:
<permission android:name="com.example.locations.permission.MAPS_RECEIVE" android:protectionLevel="signature"></permission>
A tag including the google services might do the trick.
If you update your google play services you need to update your res/values tag too.
you have to add this line
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
in AndroidManifest.xml <application>
I have been developing a simple app for load a map view. I have followed the API. https://developers.google.com/maps/documentation/android/start#add_a_map
BUT
after the execution app goes force close and a LOGCAT ERROR
The meta-data tag in your app's AndroidManifest.xml does not have the right value. Expected 4030500 but found 0.
this is my manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.newgmaps"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="12"
android:targetSdkVersion="13" />
<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-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"/>
<application
android:allowBackup="true"
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="AIzaSyA5QozHkGwJP_9iJi7jtBV938T1wws02gA" />
<activity
android:name="com.example.newgmaps.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.gms.version" android:value="#integer/google_play_services_version" />
</application>
this is my 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"
android:name="com.google.android.gms.maps.MapFragment"/>
and this is main activity
package com.example.newgmaps;
import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
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;
}
}
Do these 2 steps and let me know please
1st update your Google play services as show here
2nd try out this new manifest file that i have created for you
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.newgmaps"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="11"
android:targetSdkVersion="11" />
<permission
android:name="com.example.newgmaps.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="icom.example.newgmaps.permission.MAPS_RECEIVE" />
<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" />
<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" />
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme" >
<meta-data
android:name="com.google.android.gms.version"
android:value="4030500" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="AIzaSyA5QozHkGwJP_9iJi7jtBV938T1wws02gA" />
<activity
android:name="com.example.newgmaps.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>
let me know if you solved this problem also
Thank you
Use the previous version of Google Play Services libproject for now. It can be downloaded from here: https://dl-ssl.google.com/android/repository/google_play_services_3225130_r10.zip
Worked for me.
You can then update this later when Google makes the latest version available to everyone but something tells me it will be a while before this change propagates to all the devices out there.
I have the same problem when running the app on my 2012 N7 running 4.3.
I don't think the actual released version of Play Services matches the SDK version in version.xml:
google_play_services_version 4030500
So it's either a case of waiting for a Play Services update on Play Store, or possibly try changing the version.xml in google-play-services_lib.
If you start the Android SDK manager you should see a "Google play services for Froyo" module. Install and use this instead of the "new" version. This worked for me.
Google must update Google play services to version 4.xxx
I added this below xml code in "AndroidManifest.xml"
<Application
...
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
...
</Application>
The crash error was disappeared.
But when I call...
int iErrorCode = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this);
"iErrorCode" is 2. 2 means like this
public static final int SERVICE_VERSION_UPDATE_REQUIRED
The installed version of Google Play services is out of date. The calling activity should pass this error code to getErrorDialog(int, Activity, int) to get a localized error dialog that will resolve the error when shown.
Constant Value: 2 (0x00000002)
Details...
And also LogCat said...
W/GooglePlayServicesUtil(4728): Google Play services out of date. Requires 4030500 but found 3266136
Where is version code "4030500"??
[SDK]\extras\google\google_play_services\libproject\google-play-services_lib\res\values
You can see "version.xml". Open it!
<?xml version="1.0" encoding="utf-8"?> <resources>
<integer name="google_play_services_version">4030500</integer>
</resources>
Peekaboo~~! :)
This is why we got this errorCode(2) when update new SDK and use new "google-play-services-lib".
Okay! Got it! Let's check my Google Play Version on my device.
The version on my phone is "4.4.21" There is no problem I think.
What is this "3266136"? Where were this from? I cannot understand this.
If I figure this out, I will update this long answer.
Good luck! Everybody! :)
Updated 1:
I downloaded apk 4.4.22 and installed on my phone. But, LogCat still show me "3266136".
This is really odd thing. I think Google-Team have to fix it ASAP!!
4.4.22 Download here...
Updated 2:
After all, I decided to down-grade "google-play-services_lib" and "android-support-v4.jar" to previous version. I will be wait for them. :)
try to add this meta-data tag in the application tag in the Manifest :
<meta-data android:name="com.google.android.gms.version" android:value="#integer/google_play_services_version" />
I'm trying my hand and Android Application Development. I'm currently using Eclipse (I can't remember the version, whatever the newest is). I've crossed a bridge where I just can't seem to grasp what I'm doing wrong. I'm attempting to use the Google Maps V2 API. I've been through several documents and tried several techniques, all of which lead to the same error:
Android.view.Inflate Exception: Binary XML file line #2: Error inflating class fragment
I've been pounding my face into the keys for 2 days straight trying to grasp what I'm doing wrong here.
Things I've done:
Started with a blank activity.
Project -> Properties -> Android -> Project Build Target is Google APIs - 4.2 - API 17 - I've tried every other option as well (as long as above version 3.0, found it documented
Added the google-play-services_lib to my Package Explorer. I indicated that the google-play-services_lib was indeed a library.
Project -> Properties -> Android -> Library -> Add -> and I choose the location to the google-play-services_lib.
Included android-support-v4.jar as a dependency of my project.
I've tried so many different answers from questions similar to mine, but to no avail. :(
I can usually figure these things out, but maybe I'm just too overloaded.
My package explorer tree in eclipse looks like
google-play-services_lib
Svma
Here's the code:>
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"/>
Manifest
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.testing.svma"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" />
<permission
android:name="com.testing.svma.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<uses-permission android:name="com.testing.svma.permission.MAPS_RECEIVE" />
<uses-permission android:name="android.permission.INTERNET" />
<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" />
<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" >
<activity
android:name="com.testing.svma.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="SHA1_Generated_KEY_HERE" />
</application>
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
</manifest>
MainActivity.java
package com.testing.svma;
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class MainActivity extends FragmentActivity {
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Reference Documents
I used “Error inflating class fragment” with google map to try and fix my issues.
I referenced This google maps quick start guide to create my project.
I had started initially with the sample code from the Introduction to the Google Maps Android V2 Api
A whole slew of SO questions.
So, SO Community, what am I doing wrong? Why am I unable to grasp this simple concept.
Thank you in advance.
I know this is probably a dead thread but just in case someone stumbles upon here having an identical problem - your manifest might be missing the following meta information:
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Declare it within the <application> element and your code should work. I ran into the same issue following a youtube tutorial that skipped this step and only when carefully going through the original Google tutorial I noticed the missing code.
Anyway, hope this helps someone.
I have the same code/same problem! Try adding android:name="com.testing.svma.MainActivity" to "fragment" in the layout! It solved the issue for me
<?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.testing.svma.MainActivity"/>
I had the same problem, solved it by modifying the Manifest.
This is my manifest.
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="example.gps"
android:versionCode="1"
android:versionName="1.0" >
<permission
android:name="example.gps.permission.MAPS_RECEIVE"
android:protectionLevel="signature"></permission>
<!-- Copied from Google Maps Library/AndroidManifest.xml. -->
<uses-sdk
android:minSdkVersion="9"
android:targetSdkVersion="17"/>
<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"/>
<!-- External storage for caching. -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<!-- My Location -->
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION"/>
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/>
<!-- Maps API needs OpenGL ES 2.0. -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true"/>
<!-- End of copy. -->
<application
android:allowBackup="true"
android:icon="#drawable/ic_launcher"
android:label="#string/app_name"
android:theme="#style/AppTheme"
android:hardwareAccelerated="true" >
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="<YOUR VALUE>"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<activity
android:name="example.gps.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>
And the xml file 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"
/>
The java class is
public class MainActivity extends FragmentActivity
{
#Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
That solved my problem
Try to add google-play-services library reference to your project. If you are using Eclipse, you need to go to Project->Properties->Android and Add google-play-services library project.
ALTERNATIVELY,
You can modify project.properties file manually.
Try to add reference to your google_play_services library. So my project.properties file looks like:
# Project target.
target=android-17
android.library.reference.1=../../../android-sdks/extras/google/google_play_services/libproject/google-play-services_lib
In your case path to google-play-services lib may be different
I tried to import your code and it crashed as well. When I modified properties file - I've got map running
I spend a lot of time trying to solve this problem and after much reading and trying, I solved by changing the
public class MainActivity extends FragmentActivity
for this
public class MainActivity extends android.support.v4.app.FragmentActivity
I hope this can help you
Had tried all the above answers over a period of a couple of days and then eventually this worked:
Project -> Properties -> Android -> Project Build Target
Changed the project build target to android 4.3(API 18) and clicked apply
In the manifest I then manually changed the min and target sdk versions:
<uses-sdk
android:minSdkVersion="18"
android:targetSdkVersion="18" />
This now matches the target=android-18 in the project.properties file (which resulted from the project build target change we did first)
I also tried android:minSdkVersion="11" which worked so the targetSdkVersionis the important bit.
Hope this helps someone!
I had the same problem and I did the mistake to only add one of the 2 following tags.
The actual error is really misleading, as you might be thinking of some API level UI issue.
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="<YOUR VALUE>"/>
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
Note that you are also missing one of these two
Frequently the problem is in Manifest.xml , so be sure that you write the right permissions like :
`
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.zako.android.locationapi.maps"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" />
<permission
android:name="com.zako.android.locationapi.maps.permission.MAPS_RECEIVE"
android:protectionLevel="signature" />
<!-- Required OpenGL ES 2.0. for Maps V2 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<!-- Requires OpenGL ES version 2 -->
<uses-feature
android:glEsVersion="0x00020000"
android:required="true" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="com.zako.android.locationapi.maps.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="com.zako.android.locationapi.maps.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="......" />
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
</application>
</manifest>
`
don't forget <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
and <meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
I had a similar error and I think it comes from this point: when I include the Google Play Service API I do not copy it in my workspace, I use the original one !!!
Note: You should be referencing a copy of the library that you copied to your source tree—you should not reference the library from the Android SDK directory.
Check this point.
I have got similar problem that I resolved by right click project->tools>add support library ...
and setup library
I hope this help you
Just include the following line of code on onDestroy()
SupportMapFragment mapFragment = ((SupportMapFragment) getActivity().getSupportFragmentManager().findFragmentById(R.id.map_location_sharing));
if(mapFragment != null) {
FragmentManager fM = getFragmentManager();
fM.beginTransaction().remove(mapFragment).commit();
It worked for me.Hopefully gonna work for you too. Thanks
I had this error too and it was due to EXTERNAL PERMISSIONS. It has no sense but I added this permission and since then everything worked fine.
In Some of android 6.0 mobile this exception is bug
If unable to flat XML cause by
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.Configuration android.content.res.Resources.getConfiguration()' on a null object reference
Then it is active bug in android
https://issuetracker.google.com/issues/35827842
This can be solved by adding
android:hardwareAccelerated="true" adding in activity tag
using both meta data references was resolving the issue in my case:
<meta-data
android:name="com.google.android.gms.version"
android:value="#integer/google_play_services_version" />
<meta-data
android:name="com.google.android.maps.v2.API_KEY"
android:value="yourAPIkeyFromGoogleAPIConsole" />
I simply added API key to manifest and it helped
I was facing the same problem I just added the API_KEY to Manifest and every thing is fine.
<meta-data
android:name="com.google.android.geo.API_KEY"
android:value="#string/map_api_key" />