Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Google Play Services update

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> 
like image 995
SpeedEX505 Avatar asked Nov 01 '13 09:11

SpeedEX505


People also ask

Why I cant update my Google Play Services?

If you continue to have trouble with Google Play Services, you should clear its cache and data. You can clear the cache without risk, but if you clear the data, you'll need to log into your Google account again, so be sure you have your username and password handy. 1. Start the Settings app on your Android phone.

Can I install Google Play Services?

While not all Android phones come with Google Play installed, you can still install it if you need its service. Generally, Google Play Services is preinstalled on all Android phones.

How do I download APK from Google Play Services?

To download Google Play Services, all you have to do is search for it in the Uptodown catalog. Once the APK file is downloaded, just make sure you've allowed the installation of external files.


2 Answers

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.

like image 86
BostonGeorge Avatar answered Oct 12 '22 23:10

BostonGeorge


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 :)

like image 38
Saran Avatar answered Oct 12 '22 23:10

Saran