无法在Android中获得广告ID

时间:2015-06-12 14:32:42

标签: android google-play google-play-services genymotion

我使用下面的代码在android中获取广告ID,但它给出了以下异常。

06-12 12:14:19.034: E/AndroidRuntime(13631): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.authorwjf.amianemulator/com.authorwjf.amianemulator.Main}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.String com.google.android.gms.ads.identifier.AdvertisingIdClient$Info.getId()' on a null object reference

我在Android清单文件中添加了Google Play服务库和元标记。

我在活动的oncreate方法中使用下面的代码。

 Info adInfo = null;

    try {
         adInfo = AdvertisingIdClient.getAdvertisingIdInfo(this);
    } catch (IOException e) {

    } catch (GooglePlayServicesNotAvailableException e) {

    } catch (IllegalStateException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (GooglePlayServicesRepairableException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

    String AdId = adInfo.getId();
    System.out.println("AdId :: "+AdId);

有些疑惑::

  1. genymotion是否支持广告ID?

  2. 是否在所有使用4.0及以上版本的Android手机中提供广告ID?

  3. 请帮助我获取广告ID。

1 个答案:

答案 0 :(得分:8)

您收到此例外是因为设备(或模拟器)上未安装Google Play服务。

您可以阅读Google Play服务文档:

  

注意:因为很难预测每个设备的状态,所以   必须始终在您之前检查兼容的Google Play服务APK   访问Google Play服务功能。

     

参考:https://developers.google.com/android/guides/setup#ensure_devices_have_the_google_play_services_apk

您可以使用isGooglePlayServicesAvailable方法检查Google Play服务是否已安装,例如:

if(GoogleApiAvailability.getInstance().isGooglePlayServicesAvailable(this) == ConnectionResult.SUCCESS) {
    //Google Play Services are available
} else {
    //Google Play Services are not available, or not updated
}
  

genymotion是否支持广告ID?

是的,但您需要手动安装Google Play服务。请参阅此answer

  

是正在使用的所有Android手机中的广告ID   4.0及以上?

不,Google Play服务可能无法使用。