Google Play Services update

拜拜、爱过 提交于 2019-12-17 05:55:48

问题


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>

回答1:


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.




回答2:


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




回答3:


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



回答4:


I solved my issue of the same with

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



回答5:


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



回答6:


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.



来源:https://stackoverflow.com/questions/19724113/google-play-services-update

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!