Google Play服务更新

昨天API 19出来了,所以我升级了SDK和其他(包括Google Play服务)现在这个方法:

private boolean isGooglePlayInstalled(){ int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); if(status == ConnectionResult.SUCCESS){ return true; }else{ ((Dialog)GooglePlayServicesUtil.getErrorDialog(status, this,10)).show(); } return false; } 

在线投掷

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

如何解决这个问题? 我没有元素

  “com.google.android.gms.version” 

在清单之前和它的工作。

这是我的清单:

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

这对我工作:

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

把它放在清单的最后,在你的Map API键元数据标签之后。 由于您在onCreate方法中检查GPlayServices可用性,例如:

 // 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); } 

…一旦你点击对话框更新GPlayServices,你将被带到GPlayStore。 通常,我从GPlayStore菜单中卸载,然后select更新将可用。 它应该在那之后工作。

包内容比较

“google_play_services_froyo”lib项目包含这些com.google.android.gms包:

  • APPSTATE
  • AUTH
  • 共同
  • dynamic
  • 游戏
  • GCM
  • 内部
  • 位置
  • 地图
  • 全景

另一方面,新的(rev。13)“google_play_services”lib项目在com.google.android.gms有一些额外的包:

  • 广告
  • APPSTATE
  • AUTH
  • 共同
  • dynamic
  • 游戏
  • GCM
  • 内部
  • 位置
  • 地图
  • 全景
  • 钱包

另外,这个软件包可以在新的(rev。13)“google_play_services”: com.google.ads

AndroidManifext.xml比较

旧的(第12版)“google_play_services”有:

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

新引入的“google_play_services_froyo”lib项目有:

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

结论

“google_play_services_froyo”与老版本的google_play_services的lib项目在function上是一样的,所以如果您只想保持应用程序的兼容性而不关心新的API,只需在您的google_play_services_froyo中导入项目,你很好去。

另一方面,如果您想使用新的(第13版)“google_play_services”lib项目,一旦您导入它,您必须将其添加到您的应用程序清单:

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

希望这有助于:)

昨天发生在我身上 我只需要在清单中添加这个:

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

我解决了同样的问题

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

您必须在清单文件中添加以下行。
我希望它会起作用。

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

我遇到了这个错误,因为我引用了SDK目录中的原始副本。 确保你首先将库复制到android工作区,并只引用它。 在eclipse中,您可以通过在导入项目时选中“将项目复制到工作区”来完成。