2014-06-18 3 views
0

WebView에서 AdMob 광고를 구현하려고합니다. 내 인생에서 나는 로그에 보여줄 것이 아무것도 없다. 광고가 전혀 호출되지 않는 것과 비슷합니다. AdMob 계정에는 요청이 표시되지 않습니다. 처음에는 WebView가 레이아웃의 모든 공간을 차지하고 있다고 생각했지만 이제는 광고와 관련된 LogCat 출력이 표시되지 않기 때문에 두 번째로 추측됩니다.동일한 레이아웃의 WebView가있는 AdMob 광고?

레이아웃 :

<?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:orientation="vertical" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent"> 
     <com.google.ads.AdView android:id="@+id/adView" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       ads:adUnitId="[myIDishere]" 
       ads:adSize="BANNER" 
       ads:testDevices="[myhashishere]" 
       ads:loadAdOnCreate="true"/> 
    <WebView 
     android:id="@+id/webView" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" /> 

    </LinearLayout> 

그리고 내 주요 활동 :

public class MainActivity extends Activity { 



//StartServicesCheck 


private boolean checkPlayServices() { 
     int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
     if (status != ConnectionResult.SUCCESS) { 
     if (GooglePlayServicesUtil.isUserRecoverableError(status)) { 
      showErrorDialog(status); 
     } else { 
      Toast.makeText(this, "This device is not supported.", 
       Toast.LENGTH_LONG).show(); 
      finish(); 
     } 
     return false; 
     } 
     return true; 
    } 

    void showErrorDialog(int code) { 
     GooglePlayServicesUtil.getErrorDialog(code, this, 
      REQUEST_CODE_RECOVER_PLAY_SERVICES).show(); 
    } 

    static final int REQUEST_CODE_RECOVER_PLAY_SERVICES = 1001; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     switch (requestCode) { 
     case REQUEST_CODE_RECOVER_PLAY_SERVICES: 
      if (resultCode == RESULT_CANCELED) { 
      Toast.makeText(this, "Google Play Services must be installed.", 
       Toast.LENGTH_SHORT).show(); 
      finish(); 
      } 
      return; 
     } 
     super.onActivityResult(requestCode, resultCode, data); 
    } 



//EndServicesCheck 

private WebView mWebview ; 

@Override 
public void onBackPressed() { 
    if(mWebview.canGoBack() == true){ 
     mWebview.goBack(); 
    }else{ 
     super.onBackPressed(); 
    } 
} 


public class BannerExample extends Activity { 
     @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); 
     AdRequest adRequest = new AdRequest.Builder().build(); 
     adView.loadAd(adRequest); 
     } 
    } 


@Override 
public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 

    mWebview = new WebView(this); 

    mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 
    mWebview.getSettings().setBuiltInZoomControls(true); 

    if(android.os.Build.VERSION.SDK_INT >= 11) { 
     mWebview.getSettings().setDisplayZoomControls(false); 
    } 

    final Activity activity = this; 

    mWebview.setWebViewClient(new WebViewClient() { 
     @Override 
     public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
      Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
     } 
    }); 

    mWebview .loadUrl("[webpagehere]"); 
    setContentView(mWebview); 


    mWebview.setWebViewClient(new WebViewClient(){ 

     @Override 
     public void onPageFinished(WebView view, String url) { 
      // TODO Auto-generated method stub 
      super.onPageFinished(view, url); 
      mWebview.scrollTo(681, 100); 
     } 

    } 
    ); 

} 

}

내 자체 코딩에 뭔가 문제가 있습니까? 요청이나 로그 출력이 표시되지 않기 때문에 나는 그런 식으로 기대고 있습니다.

+0

는 초를 기다린 코드가 엉망이된다. MainActivity 내에서 배너 활동을 정의 했습니까 ?? 하나의 활동 만 작성하십시오 .. –

답변

1

WebView을 다음과 같이 변경하십시오. 귀하의 AdViewWebView에 의해 숨겨진되고있다 : 나는 또한 match_parent하는 AdView의 폭을 설정하는 제안 및 adSize "SMART_BANNER"로 SMART_BANNER 광고가 자동으로 방향과 폭이 장치 중독에 따라 자신의 크기를 조정

<WebView 
    android:id="@+id/webView" 
    android:layout_width="fill_parent" 
    android:layout_height="0dp" 
    android:weight="1" /> 

.

편집

난 그냥 당신의 코드를 통해 갔다. 그것은 많은 작은 실수를했습니다. 다음으로 변경 :

public class MainActivity extends Activity { 



//StartServicesCheck 

@Override 
public void onCreate(Bundle savedInstanceState) { 

super.onCreate(savedInstanceState); 
setContentView(R.layout.main); 
AdView adView = (AdView)this.findViewById(R.id.adView); 
AdRequest adRequest = new AdRequest.Builder().build(); 
adView.loadAd(adRequest); 
mWebview = (WebView) findViewById(R.id.webview); 

mWebview.getSettings().setJavaScriptEnabled(true); // enable javascript 
mWebview.getSettings().setBuiltInZoomControls(true); 

if(android.os.Build.VERSION.SDK_INT >= 11) { 
    mWebview.getSettings().setDisplayZoomControls(false); 
} 

final Activity activity = this; 

mWebview.setWebViewClient(new WebViewClient() { 
    @Override 
    public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) { 
     Toast.makeText(activity, description, Toast.LENGTH_SHORT).show(); 
    } 
}); 

mWebview .loadUrl("[webpagehere]"); 
setContentView(mWebview); 


mWebview.setWebViewClient(new WebViewClient(){ 

    @Override 
    public void onPageFinished(WebView view, String url) { 
     // TODO Auto-generated method stub 
     super.onPageFinished(view, url); 
     mWebview.scrollTo(681, 100); 
    } 

} 
); 

} 


private boolean checkPlayServices() { 
    int status = GooglePlayServicesUtil.isGooglePlayServicesAvailable(this); 
    if (status != ConnectionResult.SUCCESS) { 
    if (GooglePlayServicesUtil.isUserRecoverableError(status)) { 
     showErrorDialog(status); 
    } else { 
     Toast.makeText(this, "This device is not supported.", 
      Toast.LENGTH_LONG).show(); 
     finish(); 
    } 
    return false; 
    } 
    return true; 
} 

void showErrorDialog(int code) { 
    GooglePlayServicesUtil.getErrorDialog(code, this, 
     REQUEST_CODE_RECOVER_PLAY_SERVICES).show(); 
} 

static final int REQUEST_CODE_RECOVER_PLAY_SERVICES = 1001; 

@Override 
protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    switch (requestCode) { 
    case REQUEST_CODE_RECOVER_PLAY_SERVICES: 
     if (resultCode == RESULT_CANCELED) { 
     Toast.makeText(this, "Google Play Services must be installed.", 
      Toast.LENGTH_SHORT).show(); 
     finish(); 
     } 
     return; 
    } 
    super.onActivityResult(requestCode, resultCode, data); 
} 



//EndServicesCheck 

private WebView mWebview ; 
@Override 
public void onBackPressed() { 
    if(mWebview.canGoBack() == true){ 
     mWebview.goBack(); 
    }else{ 
     super.onBackPressed(); 
    } 
} 




} 

PS를 다음 엉망 들여 죄송합니다 : P

+0

방금 ​​변경된 내용을 모두 보았습니다. (logcat에서 여전히로드하려고하는 광고에 대한 언급이 없습니다.) ( – IAmTheSquidward

+0

도움을 주셔서 감사합니다 , 감사합니다. 그래서, 변경 내용을 구현하고 즉시 응용 프로그램이 충돌합니다. Logcat은 다음과 같이 설명합니다. '06-18 11 : 36 : 54.380 : E/AndroidRuntime (27310) : 원인 : java.lang.ClassNotFoundException : 경로 "com.google.ads.AdView"클래스를 찾지 못했습니다 : DexPathList [[zip 파일 "/data/app/com.iamthesquidward.ferris-14.apk"],nativeLibraryDirectories=[/data/app-lib/ com.iamthesquidward.ferris-14,/vendor/lib,/system/lib]]'.jar를 libs로 복사하고 Play를 참조 했음에도 불구하고 AdMob 참조를 찾을 수 없다고 가정합니다. 서비스 – IAmTheSquidward

+0

Google Play 서비스가 제대로 추가되었는지 확인하고 Play 뷰 서비스 (예 : com.google.android.gms)에서 adview를 바꾸십시오. ads.AdView. 다음 링크를 확인하십시오. https://developers.google.com/mobile-ads-sdk/docs/admob/fundamentals –