【问题标题】:Admob ads displaying on emulator but not real deviceAdmob 广告显示在模拟器上,但不是真实设备
【发布时间】:2013-05-18 14:36:51
【问题描述】:

我有一个简单的活动来测试广告的显示:

public class AdTestActivity extends Activity {

private AdView adView;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    Thread.setDefaultUncaughtExceptionHandler(new ExceptionHandler(this));
    setContentView(R.layout.ad_test);

    adView = new AdView(this, AdSize.BANNER, "[my ad id]");
    LinearLayout layout = (LinearLayout)findViewById(R.id.layout_at_1);
    layout.addView(adView);
    adView.loadAd(new AdRequest());
}

@Override
  public void onDestroy() {
    if (adView != null) {
      adView.destroy();
    }
    super.onDestroy();
  }
}

广告在模拟器上运行良好,在我的手机上通过 ADB 运行。但是,如果我创建项目的 .apk 并将其安装在同一部手机上(从 ADB 卸载该手机后),它会在我打开 AdTestActivity 后立即强制关闭。活动在清单中声明:

    <activity
        android:name=".AdTestActivity"
        android:label="@string/title_activity_main"
        android:screenOrientation="portrait" >
    </activity>

我已经声明了权限:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

知道发生了什么吗?

编辑 - 是的,我已在手机上禁用广告拦截。

【问题讨论】:

    标签: android admob


    【解决方案1】:

    安装 APK 后是否出现 ClassNotFoundException 或 ActivityNotFoundException?

    如果是这样,请在您的构建路径中导出 AdMod jar 文件-> 订购和导出

    【讨论】:

      【解决方案2】:

      通过以下代码生成 id:

      String android_id = Settings.Secure.getString(
                  this.getContentResolver(), Settings.Secure.ANDROID_ID);
      String deviceId = md5(android_id).toUpperCase();
      
      
      public static final String md5(final String s) {
          try {
              // Create MD5 Hash
              MessageDigest digest = java.security.MessageDigest
                      .getInstance("MD5");
              digest.update(s.getBytes());
              byte messageDigest[] = digest.digest();
      
              // Create Hex String
              StringBuffer hexString = new StringBuffer();
              for (int i = 0; i < messageDigest.length; i++) {
                  String h = Integer.toHexString(0xFF & messageDigest[i]);
                  while (h.length() < 2)
                      h = "0" + h;
                  hexString.append(h);
              }
              return hexString.toString();
      
          } catch (NoSuchAlgorithmException e) {
              e.printStackTrace();
          }
          return "";
      }
      

      并将其用于:

      AdRequest adRequest = new AdRequest.Builder().addTestDevice(deviceId).build();
      

      此外,如果失败,谷歌会在 logcat 中为您提供该设备 ID。也请看!!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-05-10
        • 1970-01-01
        • 1970-01-01
        • 2020-11-13
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多