无法在安卓设备上获取广告识别码。

16
我正在使用以下代码在安卓设备中获取广告标识符,但是它会导致以下异常。
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服务库和元标记。
我在Activity的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是否支持广告标识(Advertising ID)?

  2. 在所有使用4.0及以上的Android手机上,广告标识是否可用?

请帮我获取广告标识。

1个回答

14

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

正如您在Google Play服务文档中所读到的:

注意:由于很难预测每个设备的状态,因此在访问Google Play服务功能之前,您必须始终检查兼容的Google Play服务APK是否可用。

参考资料: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服务。请参阅此答案

所有使用4.0及以上版本的Android手机都有广告ID可用吗?

不是的,Google Play服务可能不可用。


谢谢Mattia...解释的很好,解决了我的问题...实际上我正在寻找一些可以阻止我的应用在仿真器上运行的东西...我已经尝试了构建号、制造商等来阻止仿真器...但是仍然有一些黑客在一些仿真器/模拟器上安装它或通过VPN绕过或运行一些自动脚本.....我不知道他们在做什么.... - Anjali
实际上我的应用程序就像一个任务墙,用户可以安装和运行应用程序并在获得一定积分后提取现金。但是有些用户滥用了它,导致我的客户无法获得活动的安装量,甚至尽管活动已经安装,仍然会损失资金。请看看你能否帮我解决这个问题。 - Anjali
我已经发布了一个关于这个问题的问题,但没有得到正确的回答...希望你能在这里帮助我...https://dev59.com/Hovda4cB1Zd3GeqPfuca#30801833?noredirect=1#comment49652709_30801833 - Anjali

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接