it-swarm.com.ru

Обновление сервисов 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;
}

Бросает в линию 

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

Как это исправить? У меня не было элемента 

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

Это сработало для меня:

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

Поместите это в конец своего манифеста после тэга метаданных ключа Map API. Поскольку вы проверяете доступность GPlayServices в своем методе onCreate, например:

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

Сравнение содержимого пакета

Проект lib "google_play_services_froyo" содержит следующие пакеты com.google.Android.gms:

  • appstate
  • авт
  • общий
  • динамический
  • игры
  • гсм
  • внутренний
  • место нахождения
  • карты
  • панорама
  • плюс

С другой стороны, новый (rev. 13) проект lib "google_play_services" содержит некоторые дополнительные пакеты в com.google.Android.gms:

  • Объявления
  • appstate
  • авт
  • общий
  • динамический
  • игры
  • гсм
  • внутренний
  • место нахождения
  • карты
  • панорама
  • плюс
  • бумажник

Кроме того, этот пакет находится в новом (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> 

Недавно представленный проект lib "google_play_services_froyo" имеет:

<?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» в свой проект, и вы готовы идти.

С другой стороны, если вы хотите использовать новый (редакция 13) проект lib "google_play_services", после того, как вы импортируете его, вы должны добавить его в манифест приложения:

<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