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中,您可以通过在导入项目时选中“将项目复制到工作区”来完成。