首页 文章

Admob广告在模拟器上显示但不是真实设备

提问于
浏览
2

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

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();
  }
}

广告在模拟器上工作正常,在亚行的手机上也能正常工作 . 但是,如果我创建一个项目的.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" />

知道发生了什么事吗?

编辑 - 是的,我已禁用手机上的广告屏蔽功能 .

2 回答

  • 0

    安装APK后你得到ClassNotFoundException还是ActivityNotFoundException?

    如果是这样,请在Build Path-> Order and Export中导出AdMod jar文件

  • 1

    通过以下代码生成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 . 请看也是!!

相关问题