Admob 关于多项活动?

Admob on Multiple Activities?(Admob 关于多项活动?)
本文介绍了Admob 关于多项活动?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的应用程序中有 7 个活动.我想在每个活动中显示 admob

I have 7 Activities in my application. I wants to display admob in every activity

我是否必须在每个活动中创建每个 AdView?

是否有任何替代方法可以重用以前的活动容器防止它被破坏所以我可以在下一个活动中使用......

is there any alternative to reuse previous activity container OR prevent it from destroy so can i use in next activity....

我们将不胜感激的任何代码或提示.

Any code or hint we'll b appreciate.

谢谢

推荐答案

我做到了.感谢 yorkw 的评论.这不是一个有效的代码.但是您可以进行相应的修改.这减少了每个活动的代码.

I DID this. Thankx to yorkw comment. This is not an efficient code. But you can modify accordingly. That reduces your code for each activity.

只是扩展TestingAdmobActivity" &调用 SetupAds() 调用您的广告.

Just Extends "TestingAdmobActivity" & call SetupAds() to call your advs.

我的超类TestingAdmobActivity.java"

package com.test.myadmob;

import com.google.ads.Ad;
import com.google.ads.AdListener;
import com.google.ads.AdRequest;
import com.google.ads.AdRequest.ErrorCode;
import com.google.ads.AdSize;
import com.google.ads.AdView;

import android.app.Activity;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;

public class TestingAdmobActivity extends Activity implements AdListener{
    public AdView adView;
    public String ADV_PUB_ID = "a14e2fb60918999";
    private boolean adVisible = true;
    LinearLayout layout;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        Log.i("Admob", "Calling External");
    }

    public void SetupAds(){ 
    Log.i("AdMob", "Start Setup");
    layout = new LinearLayout(this);
    layout.setOrientation(LinearLayout.VERTICAL);
    layout.setGravity(android.view.Gravity.BOTTOM | android.view.Gravity.CENTER_HORIZONTAL);   //To put AdMob Adv to Bottom of Screen
    Log.i("AdMob", "End Layout Setup");

    addContentView(layout, new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT));

    adView = new AdView(this, AdSize.BANNER, ADV_PUB_ID);
    adView.setAdListener(this);
    Log.i("AdMob", "Init complete Adview");

    layout.addView(adView, new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
    Log.i("AdMob", "Done AddView Layout");

    AdRequest request = new AdRequest();    
    request.addTestDevice(AdRequest.TEST_EMULATOR);
    request.addKeyword("LifeOK");

    adView.loadAd(request);

    Log.i("AdMob", "End Setup");    
    }

    private Handler handler = new Handler() 
    {
        public void  handleMessage(Message msg) 
        {
            switch (msg.what)
            {
                case 0:     //Disable Adv
                    if (adVisible)
                        adVisible = false;
                    break;

                case 1:     //Enable Adv
                    if (!adVisible)
                    {
                        Log.i("AdMob", "Case 1");                       
                        adVisible = true;
                    }
                    break;

                case 2:     //Enable but Hide Adv
                        adView.setVisibility(View.GONE);                
                    break;

                case 3:     //Enable but Show Adv
                        adView.setVisibility(View.VISIBLE);
                    break;

                default:
                    break;
            }
        }
    };

    public void DisableAds()
    {
        Log.i("AdMob", "Request Disable Adv");
        handler.sendEmptyMessage(0);
    }

    public void EnableAds()
    {
        Log.i("AdMob", "Request Enable Adv");
        handler.sendEmptyMessage(1);
    }

    public void HideAdv()  //Enable Adv but Hide
    {
        Log.i("AdMob", "Request Hide Adv");
        handler.sendEmptyMessage(2);
    }

    public void ShowAdv()  //Show Adv
    {
        Log.i("AdMob", "Request Show Adv");
        handler.sendEmptyMessage(3);
    }

    @Override
    public void onDismissScreen(Ad arg0) {
        // TODO Auto-generated method stub
        Log.d("AdMob", "Dismiss Screen");
    }

    @Override
    public void onFailedToReceiveAd(Ad arg0, ErrorCode arg1) {
        // TODO Auto-generated method stub
        Log.d("AdMob", "failed to receive ad (" + arg1 + ")");    
    }

    @Override
    public void onLeaveApplication(Ad arg0) {
        // TODO Auto-generated method stub
        Log.d("AdMob", "Leaving Application");
    }

    @Override
    public void onPresentScreen(Ad arg0) {
        // TODO Auto-generated method stub
        Log.d("AdMob", "Present Screen");
    }

    @Override
    public void onReceiveAd(Ad arg0) {
        // TODO Auto-generated method stub
        Log.d("AdMob", "Adv Received");
    }
}

我的 FirstActivityClass "NewActivity_1.java"

package com.test.myadmob;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class NewActivity_1 extends TestingAdmobActivity {

     /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i("Admob", "OnCreate");
        SetupAds();
        Log.i("Admob", "Done");

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {         
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.i("Admob", "Going to Activity 2");
                Intent mainIntent = new Intent().setClass(NewActivity_1.this, NewActivity_2.class);
                startActivity(mainIntent);
            }
        });
    }
}

我的 SecondActivityClass "NewActivity_2.java"

package com.test.myadmob;

import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;

public class NewActivity_2 extends TestingAdmobActivity {

     /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Log.i("Admob", "OnCreate");
        SetupAds();
        Log.i("Admob", "Done");

        Button button1 = (Button) findViewById(R.id.button1);
        button1.setOnClickListener(new View.OnClickListener() {         
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                Log.i("Admob", "Going Back to Activity 1");
                finish();
            }
        });
    }
}

我的 AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.test.myadmob"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk android:minSdkVersion="7" />

    <application
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name" >
        <activity
            android:label="@string/app_name"
            android:name=".NewActivity_1" >
            <intent-filter >
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity android:name=".TestingAdmobActivity" ></activity>
        <activity android:name=".NewActivity_2" ></activity>

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

        </activity>
    </application>

    <!-- AdMob SDK requires Internet permission -->
    <uses-permission android:name="android.permission.INTERNET" />
    <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_MOCK_LOCATION" />
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
    <uses-permission android:name="android.permission.READ_PHONE_STATE" />              <!-- to get Android Device ID -->   

</manifest>

注意:为了 google admob sdk 使用的权限,我必须在具有 min-sdk 版本 7 的 android 4.0 sdk 上构建它

这篇关于Admob 关于多项活动?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How to target newer versions in .gitlab-ci.yml using auto devops (java 11 instead of 8 and Android 31 instead of 29)(如何在.gitlab-ci.yml中使用自动开发工具(Java 11而不是8,Android 31而不是29)瞄准较新的版本)
Android + coreLibraryDesugaring: which Java 11 APIs can I expect to work?(Android+core LibraryDesugering:我可以期待哪些Java 11API能够工作?)
How to render something in an if statement React Native(如何在If语句中呈现某些内容Reaction Native)
How can I sync two flatList scroll position in react native(如何在本机Reaction中同步两个平面列表滚动位置)
Using Firebase Firestore in offline only mode(在仅脱机模式下使用Firebase FiRestore)
Crash on Google Play Pre-Launch Report: java.lang.NoSuchMethodError(Google Play发布前崩溃报告:java.lang.NoSuchMethodError)