我一直试图在我的Android应用上运行广告但是它们不会出现。我搜索了很多网站,但没有人得到答案。最后我开始使用本教程http://www.smartlab.at/articles/admob_advertising_android_tutorial/。我下载了这个例子,它运行得很好,所以我复制了代码。但广告不会显示在我的应用中。
我知道由于缺少广告资源而收到“onfailedtorecieve(广告请求成功)” 错误意味着我的代码很好,但问题是我处于测试模式,并且在我试图计算如何添加广告的数小时内,我发现即使缺少广告资源,广告也应始终显示在testmode中。我输入了我从logcat获得的设备ID,但仍然没有广告出现。这是我的代码:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
xmlns:tools="http://schemas.android.com/tools"
xmlns:myapp="http://schemas.android.com/apk/res/com.example.test"
android:id="@+id/main_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#FFFFFF"
android:debuggable="true"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin" >
tools:context=".MainActivity" >
<com.google.ads.AdView
android:id="@+id/adview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="AD UNIT ID"
ads:loadAdOnCreate="true"
ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
/>
我确保将“TEST_DEVICE_ID”替换为我的实际设备ID,将“AD UNIT ID”替换为我从admob获得的广告单元ID。
以下是我的活动中的代码:
@Override
protected void onCreate(Bundle savedInstanceState) {
requestWindowFeature(Window.FEATURE_NO_TITLE); //hide title bar
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RelativeLayout layout=(RelativeLayout)findViewById(R.id.main_view);
adView = (AdView)this.findViewById(R.id.adview);
adView.loadAd(new AdRequest());
}
像我说什么都没有出现一样。但是,如果我将ad_unit_id放在我从教程网站下载的示例中,它就能完美运行。这是他们的代码:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello" />
<com.google.ads.AdView
android:id="@+id/adview"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
ads:adSize="BANNER"
ads:adUnitId="a1501676c633fac" <!-- This is the adunitid in the tutorial i downloaded-->
ads:loadAdOnCreate="true"
ads:testDevices="TEST_EMULATOR, TEST_DEVICE_ID"
/>
</LinearLayout>
这是他们的活动代码:
package at.smartlab.androidbook.AdMobTest;
import com.google.ads.AdRequest;
import com.google.ads.AdView;
import android.app.Activity;
import android.os.Bundle;
public class AdMobTestActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
// Look up the AdView as a resource and load a request.
AdView adView = (AdView)this.findViewById(R.id.adview);
adView.loadAd(new AdRequest());
}
}
有趣的是,我没有必要将我的实际设备ID放在我下载的示例的xml代码中,无论我输入我的ID还是不这样做,它都能正常工作。此外,我可以使用我的adunitid或使用他们的,它可以正常工作。
我确保在androidmanifest.xml文件和正确的标签中添加适当的权限。老实说,我不明白为什么广告不会出现在我的应用上,而是出现在我下载的示例中。任何帮助,将不胜感激。谢谢。
答案 0 :(得分:0)
首先,你要使用旧的教程。
标签现在应该是 Com.Google.android.gms.adView ..不要介意我手机上的随机大写字母。您还需要确保拥有适用于Google Play服务的SDK
<强> XML 强>
//at the top
xmlns:ads="http://schemas.android.com/apk/res-auto
<com.google.android.gms.ads.AdView
android:id="@+id/adView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
ads:adSize="BANNER"
ads:adUnitId="your new pub Id goes here ca-app-something">
</com.google.android.gms.ads.AdView>
<强>的java 强>
//calling ads
adView=(AdView)findViewById(R.id.adView);
AdRequest adRequest=new. AdRequest.Builder().build();
adView.loadAd(adRequest);
<强>清单强>
<activity android:name="com.google.android.gms.ads.AdActivity"
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize">
</activity>
<meta-data android:name="com.google.android.gms.version"
android:value="@integer/google_play_services_version"/>
测试广告的代码
adView=(AdView)findViewById(R.id.MyAdView);
AdRequest adRequest=new.AdRequest.Builder().addTestDevice(AdRequest.DEVICE_ID_EMULATOR).addTestDevice("7XXXXXXXXXXXXXXXXXXXXX").build();
adView.loadAd(adRequest);