web-dev-qa-db-ja.com

Google Playサービスの更新

昨日API 19がリリースされたので、SDKとその他(Google Play Servicesを含む)をこのメソッドにアップグレードしました:

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

これは私のために働いた:

<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メニューからアンインストールすると、更新するオプションが利用可能になります。その後動作するはずです。

62
BostonGeorge

パッケージ内容の比較

「google_play_services_froyo」libプロジェクトには、これらのcom.google.Android.gmsパッケージ:

  • appstate
  • auth
  • 一般
  • 動的
  • ゲーム
  • gcm
  • 内部
  • ロケーション
  • 地図
  • パノラマ
  • プラス

一方、新しい(rev。13) "google_play_services" libプロジェクトには、いくつかの追加パッケージがcom.google.Android.gms

  • 広告
  • appstate
  • auth
  • 一般
  • 動的
  • ゲーム
  • gcm
  • 内部
  • ロケーション
  • 地図
  • パノラマ
  • プラス
  • ウォレット

さらに、このパッケージは新しい(rev。13) "google_play_services"にあります:com.google.ads

AndroidManifext.xmlの比較

古い(rev。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」は機能的には古い(rev。12)「google_play_services」libプロジェクトと同じであるため、アプリの互換性を維持し、新しいAPIを気にしたくない場合は、「google_play_services_froyo」をプロジェクトとあなたは行ってもいいです。

一方、新しい(rev。13) "google_play_services" libプロジェクトを使用する場合、インポートしたら、これをアプリマニフェストに追加する必要があります。

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

これが役に立てば幸いです:)

21
Saran

それは昨日私に起こりました。マニフェストにこれを追加する必要がありました。

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

マニフェストファイルに次の行を追加する必要があります。
うまくいくことを願っています。

<meta-data
    Android:name="com.google.Android.gms.version"
    Android:value="@integer/google_play_services_version" />
0
Nantha kumar

私の同じ問題を解決しました

<meta-data
    Android:name="com.google.Android.gms.version"
    Android:value="@integer/google_play_services_version" />
0
vamshi palutla

SDKディレクトリから元のコピーを参照したため、このエラーに直面しました。最初にライブラリを必ずAndroidワークスペースにコピーして参照するようにしてください。Eclipseでは、プロジェクトのインポート中に[プロジェクトをワークスペースにコピー]をチェックすることで実行できます。

0
Gary Wong