Java代码强制所有设备显示测试广告

时间:2012-01-27 04:05:31

标签: java android sdk admob

AdManager.setTestDevices( new String[] { 
    AdManager.TEST_EMULATOR, // Android emulator 
    "E83D20734F72FB3108F104ABC0FFC738", // My T-Mobile G1 Test Phone 
}

我想把我的测试Android应用程序交给5-10个朋友。 其中有几个人居住在1000英里外,因此无法“使用DDMS”或“将手机连接到我的开发机器上”。

我需要始终只显示AdMob测试广告。

(目前正在展示真实广告。)

我不知道(或想知道)每个人的“设备ID代码”。

我不想将每个1硬编码到我的应用程序中。

(并且一直添加所有新的。)

是否有java代码会说“无论什么设备正在使用此应用,是测试设备,所以只显示测试广告”?

3 个答案:

答案 0 :(得分:2)

也许您可以尝试即时添加测试设备:

AdManager.addTestDevice(Settings.Secure.getString(context.getContentResolver(), "android_id"))); 
// or Settings.Secure.ANDROID_ID if no context available

(我没有测试这段代码。)

编辑:

反编译AdMob JAR库给出:

AdRequest.java

public boolean isTestDevice(Context context)
  {
    if (this.i != null)
    {
      if ((
        context = AdUtil.a(context)) == null)
      {
        return false;
      }

      if (this.i.contains(context)) {
        return true;
      }
    }

    return false;
  }

查看 AdUtil.a

public static String a(Context paramContext)
  {
    if (c == null)
    {
      if (((
        paramContext = Settings.Secure.getString(paramContext.getContentResolver(), "android_id")) == null) || 
        (c()))
        paramContext = a("emulator");
      else {
        paramContext = a(paramContext);
      }

      if (paramContext == null) {
        return null;
      }

      c = paramContext.toUpperCase(Locale.US);
    }

    return c;
  }

代码被混淆但我们清楚地看到它正在针对您在Settings.Secure.ANDROID_ID中提供的值进行AdManager.addTestDevice测试。

答案 1 :(得分:0)

尝试使用AdRequest.setTestDevices方法。

AdRequest.setTestDevices( new String[] { 
    AdRequest.TEST_EMULATOR, // Android emulator 
   "E83D20734F72FB3108F104ABC0FFC738", // My T-Mobile G1 Test Phone 
});

您可能会在Google AdMob SDK重写之前查看旧的AdMob文档。

无法说您想在所有设备上投放测试广告。这是一项预防措施,因此您不会意外地向所有人发布向所有测试广告投放的应用。

答案 2 :(得分:0)

我在测试版本中完全禁用广告系统,并且仅在我拥有的设备上启用本地调试版本。 您可以显示静态图像来代替广告,这样您仍然可以使用相同的布局。