Android AdMob Ad和ErrorCode无法解析为类型

Android AdMob Ad和ErrorCode无法解析为类型,android,admob,google-play-services,Android,Admob,Google Play Services,我添加了此代码,以查看应用程序无法接收广告时的错误 // Create an ad request. Check logcat output for the hashed device ID to // get test ads on a physical device. AdRequest adRequest = new AdRequest.Builder() .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)

我添加了此代码,以查看应用程序无法接收广告时的错误

    // Create an ad request. Check logcat output for the hashed device ID to
    // get test ads on a physical device.
    AdRequest adRequest = new AdRequest.Builder()
        .addTestDevice(AdRequest.DEVICE_ID_EMULATOR)
        .addTestDevice("INSERT_YOUR_HASHED_DEVICE_ID_HERE")
        .build();

    // Start loading the ad in the background.
    adView.loadAd(adRequest);
 // Set AdListener
    adView.setAdListener(new AdListener() {
        @Override
        public void onFailedToReceiveAd(Ad ad, ErrorCode error) {
            System.err.println("Ad failed: " + ad.toString() + error.toString());    
        }

        @Override
        public void onReceiveAd(Ad ad) {
            System.out.println("Ad received: " + ad.toString());
        }
    });
  }
不幸的是,由于找不到
Ad
ErrorCode
可能是因为在最新的库中更改了某些内容,所以无法工作


我怎样才能解决这个问题呢?

我想你的意思是编译失败了。 注意:在StackOverflow上发布实际错误消息总是一个好主意

检查您的导入。如果您正在使用Admob的Google Play Services库,则该软件包已更改为
com.Google.android.gms.ads

com.google.android.gms.ads.AdListener的界面为

public abstract class AdListener {
  public void onAdLoaded();
  public void onAdFailedToLoad(int errorCode);
  public void onAdOpened();
  public void onAdClosed();
  public void onAdLeftApplication();
}
注意:自Admob-6.4.1以来,这一点发生了变化
您似乎正在使用Admob-6.4.1中的AdListener,我猜您的意思是编译失败。 注意:在StackOverflow上发布实际错误消息总是一个好主意

检查您的导入。如果您正在使用Admob的Google Play Services库,则该软件包已更改为
com.Google.android.gms.ads

com.google.android.gms.ads.AdListener的界面为

public abstract class AdListener {
  public void onAdLoaded();
  public void onAdFailedToLoad(int errorCode);
  public void onAdOpened();
  public void onAdClosed();
  public void onAdLeftApplication();
}
注意:自Admob-6.4.1以来,这一点发生了变化
您似乎正在使用Admob-6.4.1中的AdListener,我建议您按照上的步骤进行操作。我遵循同样的方法,在Emulator和real device上成功地查看了附加组件。您还应该在
Manifest.xml

中添加以下代码行

    <activity android:name="com.google.ads.AdActivity"
              android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
</activity>

我建议您按照上的步骤进行操作。我遵循同样的方法,在Emulator和real device上成功地查看了附加组件。您还应该在
Manifest.xml

中添加以下代码行

    <activity android:name="com.google.ads.AdActivity"
              android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" >
</activity>

根据google admob新的api服务

步骤

  • 下载最新的Google Play服务库
  • BannerCodeActivity.java

    public class BannerCodeActivity extends Activity {
        private AdView mAdView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_banner_code_ad_listener);
    
            mAdView = new AdView(this);
            mAdView.setAdUnitId(getResources().getString(R.string.ad_unit_id));
            mAdView.setAdSize(AdSize.BANNER);
            mAdView.setAdListener(new ToastAdListener(this));
            RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            layout.addView(mAdView, params);
            mAdView.loadAd(new AdRequest.Builder().build());
        }
    
        @Override
        protected void onPause() {
            mAdView.pause();
            super.onPause();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            mAdView.resume();
        }
    
        @Override
        protected void onDestroy() {
            mAdView.destroy();
            super.onDestroy();
        }
    }
    
  • 明示许可

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
     <activity
                android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    
    
    


    如果有任何问题,请告诉我。

    根据谷歌admob新api服务

    步骤

  • 下载最新的Google Play服务库
  • BannerCodeActivity.java

    public class BannerCodeActivity extends Activity {
        private AdView mAdView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_banner_code_ad_listener);
    
            mAdView = new AdView(this);
            mAdView.setAdUnitId(getResources().getString(R.string.ad_unit_id));
            mAdView.setAdSize(AdSize.BANNER);
            mAdView.setAdListener(new ToastAdListener(this));
            RelativeLayout layout = (RelativeLayout) findViewById(R.id.mainLayout);
            RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
            RelativeLayout.LayoutParams.MATCH_PARENT, RelativeLayout.LayoutParams.WRAP_CONTENT);
            layout.addView(mAdView, params);
            mAdView.loadAd(new AdRequest.Builder().build());
        }
    
        @Override
        protected void onPause() {
            mAdView.pause();
            super.onPause();
        }
    
        @Override
        protected void onResume() {
            super.onResume();
            mAdView.resume();
        }
    
        @Override
        protected void onDestroy() {
            mAdView.destroy();
            super.onDestroy();
        }
    }
    
  • 明示许可

    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    
    <meta-data
                android:name="com.google.android.gms.version"
                android:value="@integer/google_play_services_version" />
     <activity
                android:name="com.google.android.gms.ads.AdActivity"
            android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize"/>
    
    
    


    如果有任何问题,请告诉我。

    您需要知道如何迁移到新API的几乎所有信息都在

    但是有一件事它没有提到,那就是新的
    onAdFailedToLoad
    函数的错误代码值(现在是int值),该函数替换了旧的
    onFailedToReceiveAd

    这些都在和中进行了描述,您需要知道如何迁移到新API的几乎所有内容都在中

    但是有一件事它没有提到,那就是新的
    onAdFailedToLoad
    函数的错误代码值(现在是int值),该函数替换了旧的
    onFailedToReceiveAd

    这些都在和中描述了,我有相同的错误,这个错误是因为google play服务库没有完全添加到您的项目中,右键单击错误并选择修复项目或转到项目->属性->单击java构建路径,然后转到项目并单击添加按钮,我有相同的错误,此错误是因为google play service library未完全添加到您的项目中,右键单击此错误并选择修复项目或转到项目->属性->单击java构建路径,然后转到项目并单击添加按钮s

    是否输入此行
    是,但是错误持续存在,你可以尝试我的答案。你是否输入了这一行
    是的,但是错误持续存在,你可以尝试我的答案。我使用最新的google-play-services.jar,导入的是
    import com.google.android.gms.AdListener;导入com.google.android.gms.ads.AdRequest;导入com.google.android.gms.ads.AdSize;导入com.google.android.gms.ads.AdView但不幸的是,对象
    Ad
    似乎丢失了。您似乎正在使用Admob-6.4.1中的AdListener。您需要使用新的AdListener,它不引用Ad或错误代码。看看我更新的答案。你能给我更多的细节吗?如何使用
    onAdFailedToLoad()
    和没有
    Ad
    对象的新API打印错误?请参阅。错误代码是其中定义的4个错误之一。广告从来就不是真正相关的,而是被拉出来的。现在已经没有广告对象了。我建议您回顾一下您的用例。你为什么需要它?我使用最新的google-play-services.jar,导入的是
    import com.google.android.gms.ads.AdListener;导入com.google.android.gms.ads.AdRequest;导入com.google.android.gms.ads.AdSize;导入com.google.android.gms.ads.AdView但不幸的是,对象
    Ad
    似乎丢失了。您似乎正在使用Admob-6.4.1中的AdListener。您需要使用新的AdListener,它不引用Ad或错误代码。看看我更新的答案。你能给我更多的细节吗?如何使用
    onAdFailedToLoad()
    和没有
    Ad
    对象的新API打印错误?请参阅。错误代码是其中定义的4个错误之一。广告从来就不是真正相关的,而是被拉出来的。现在已经没有广告对象了。我建议您回顾一下您的用例。你为什么需要它?祖贝尔·艾哈迈德·汗嗯。祖贝尔·艾哈迈德·汗嗯