我使用下面的代码在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);
有些疑惑::
genymotion是否支持广告ID?
是否在所有使用4.0及以上版本的Android手机中提供广告ID?
请帮助我获取广告ID。
答案 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服务可能无法使用。