2012-08-08 90 views
1

誰能幫我,我想實現,因爲過去兩天在android系統的AdMob,但得到以下錯誤消息 -的Android的AdMob的PhoneGap不工作

08-08 19:05:33.362:W/WebCore的(3228):無法獲取視圖寬度 第一次佈局08-08 19:10:51.632:W/dalvikvm(3328):VFY:無法通過 解決直接方法3204:Landroid/webkit/WebView ;. (Landroid/content/Context; Landroid/util/AttributeSet; IZ)V 08-08 19:10:51.662:I/webclipboard(3328):clipservice: [email protected] 08-08 19 :10:52.142: I/CordovaLog(3328):將日誌級別更改爲DEBUG(3)08-08 19:10:52.142: I/CordovaLog(3328):發現使用偏好useBrowserHistory = false 08-08 19: 10:52.142:D/CordovaLog(3328):發現偏好爲 useBrowserHistory = false 08-08 19:10:52.152:E/dalvikvm(3328):可能 找不到類「android.webkit.WebResourceResponse」,引用自 方法 org.apache.cordova.CordovaWebViewClient.generateWebResourceResponse 08-08 19:10:52.152:W/dalvikvm(3328):VFY:無法分辨olve 新實例467(Landroid/webkit/WebResourceResponse;) Lorg/apache/cordova/CordovaWebViewClient; 08-08 19:10:52.152: W/dalvikvm(3328):VFY:無法找到簽名中引用的類 (Landroid/webkit/WebResourceResponse;)08-08 19:10:52.182: W/dalvikvm(3328 ):VFY:無法找到簽名中引用的類 (Landroid/webkit/WebResourceResponse;)08-08 19:10:52.182: W/dalvikvm(3328):VFY:無法找到簽名中引用的類 (Landroid/Webkit/WebResourceResponse;)08-08 19:10:52.182: W/dalvikvm(3328):VFY:無法解析虛擬方法3225: Landroid/webkit/WebViewClient; .shouldInterceptRequest (Landroid/webkit/WebView; Ljava /朗/字符串;)Landroid/webkit的/ WebResourceResponse; D/DroidGap(3328):DroidGap.init()08-08 19:10:52.192:D/CordovaWebView(3328):>>> loadUrl(file:/// (3328):init()08-08 19:10:52.212: D/CordovaWebView(3328):>>> loadUrlNow() )08-08 19:10:52.272: E/Ads(3328):無法找到com.google.ads.AdActivity,請將其確定爲 ,確保它在AndroidManifest.xml中註冊。 08-08 19:10:52.272: E/Ads(3328):您必須在AndroidManifest.xml 中使用configChanges聲明AdActivity。 08-08 19:10:52.282:我/ webclipboard(3328): clipservice:[email protected] 08-08 19:10:52.332:我/ webclipboard(3328):clipservice: android。 [email protected] 08-08 19:10:52.902: D/AndroidRuntime(3328):關閉VM 08-08 19:10:52.902: W/dalvikvm(3328):threadid = 1:線程退出與未捕獲的異常 (組= 0x40018578)08-08 19:10:52.902:E/AndroidRuntime(3328):致命 例外:main 08-08 19:10:52.902:E/AndroidRuntime(3328): java.lang .RuntimeException:無法啓動活動 ComponentInfo {com.ApplicationNexus.Albania/com.ApplicationNexus.Albania.Albania}: java.lang.NullPointerException 08-08 19:10:52.902:(Android/AndroidRuntime)(3328):at android.app.ActivityThread.handleLaunchActivity(E)/ AndroidRuntime(3328):at Android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651) 08-08 19:10:52.902: (ActivityThread.java:1667) 08-08 19:10:52.902:E/AndroidRuntime(3328):at android.app。ActivityThread.access $ 1500(ActivityThread.java:117)08-08 19:10:52.902:E/AndroidRuntime(3328):at android.app.ActivityThread $ H.handleMessage(ActivityThread.java:935) 08-08 19:10:52.902:E/AndroidRuntime(3328):at android.os.Handler.dispatchMessage(Handler.java:99)08-08 19:10:52.902:E/AndroidRuntime(3328):at android。 os.Looper.loop(Looper.java:130)08-08 19:10:52.902: E/AndroidRuntime(3328):at android.app.ActivityThread.main(ActivityThread.java:3687)08-08 19 :10:52.902:E/AndroidRuntime(3328):at java.lang.reflect.Method.invokeNative(Native Method)08-08 19:10:52.902:E/AndroidRuntime(3328):at java.la ng.reflect.Method.invoke(Method.java:507)08-08 19:10:52.902: E/AndroidRuntime(3328):at com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java :867) 08-08 19:10:52.902:E/AndroidRuntime(3328):at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625)08-08 19:10:52.902: E/AndroidRuntime(3328):at dalvik.system.NativeStart.main(本機方法)08-08 19:10:52.902: E/AndroidRuntime(3328):導致:java.lang.NullPointerException 08-08 19 :10:52.902:E/AndroidRuntime(3328):at com.ApplicationNexus.Albania.Albania.onCreate(Albania.java:22)08-08 19:10:52.902:E/AndroidRuntime(3328):at android .app.Instrumentation.callA ctivityOnCreate(Instrumentation.java:1047) 08-08 19:10:52.902:E/AndroidRuntime(3328):at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 08-08 19:10:52.902 :E/AndroidRuntime(3328):... 11多個

Following is the code of my main java file - 


    import org.apache.cordova.*; 
    import com.google.ads.*; 
    import android.os.Bundle; 
    import android.app.Activity; 
    import android.view.Menu; 
    import android.view.MenuItem; 
    import android.support.v4.app.NavUtils; 
    import android.widget.*; 

    public class Albania extends DroidGap { 
     private AdView adView; 


     @Override 
     public void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      super.loadUrl("file:///android_asset/www/index.html"); 
      super.setIntegerProperty("loadUrlTimeoutValue", 70000); 
      adView = new AdView(this, AdSize.BANNER, "a1502224a0ab1f8"); 
      LinearLayout layout = (LinearLayout) findViewById(R.id.adView); 
      layout.addView(adView); 
      adView.loadAd(new AdRequest()); } 

這裏是我的activity_appname.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    xmlns:ads="http://schemas.android.com/apk/lib/com.google.ads" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" > 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerHorizontal="true" 
     android:layout_centerVertical="true" 
     android:padding="@dimen/padding_medium" 
     android:text="@string/hello_world" 
     tools:context=".Albania" /> 


    <com.google.ads.AdView android:id="@+id/adView" 
         android:layout_width="wrap_content" 
         android:layout_height="wrap_content" 
         ads:adSize="BANNER" 
         ads:testDevices="TEST_EMULATOR, S567041ba118d" 
         ads:loadAdOnCreate="true"/> 


</RelativeLayout> 

這裏是我的Android manifest.xml文件

<application 
     android:icon="@drawable/ic_launcher" 
     android:label="@string/app_name" 
     android:theme="@style/AppTheme" > 
     <activity 
      android:name=".Albania" 
      android:label="@string/title_activity_albania" 
      android:configChanges="orientation|keyboardHidden|orientation|keyboard|screenSize|uiMode|screenLayout|locale" 
      android:hardwareAccelerated="true" > 
      <intent-filter> 
       <action android:name="android.intent.action.MAIN" /> 

       <category android:name="android.intent.category.LAUNCHER" /> 
      </intent-filter> 
     </activity> 
    <activity 
     android:name="com.google.ads.AdActivity" 
android:configChanges="keyboard|keyboardHidden|orientation|screenLayout|uiMode|screenSize|smallestScreenSize" />   
    </application> 
</manifest> 

回答

0

this SO question,請確保你在你的清單XML:

<uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/> 
+0

是的,它存在於我的manifest.xml文件中。 – webdev 2012-08-09 10:31:06

0

你並不需要指定XML和代碼AdView。只要把ads:adUnitId="a1502224a0ab1f8"到你的XML的com.google.ads.AdView,你可以刪除以下的AdView代碼:

adView = new AdView(this, AdSize.BANNER, "a1502224a0ab1f8"); 
LinearLayout layout = (LinearLayout) findViewById(R.id.adView); 
layout.addView(adView); 
adView.loadAd(new AdRequest()); 

編輯:

科爾多瓦具有加載一個URL和抽象設置視圖的方式。您必須手動獲取Cordova WebView的父級,然後將AdView添加到parentView。代碼可能看起來像這樣:

adView = new AdView(this, AdSize.BANNER, "a1502224a0ab1f8"); 
// Get the parent of the cordova webview. May be able to do something like: this.webView.getParent(); 
parentView.addView(adView); 
adView.loadAd(new AdRequest()); 
+0

你的意思是說我必須在我的xml文件中這樣做 - 'code' 'code' 我不明白這個」刪除Adview代碼「。 – webdev 2012-08-09 10:28:02

+0

正確 - 我已更新我的答案,以向您展示您不再需要的Java代碼。 – 2012-08-09 15:49:36

+0

非常感謝您的回覆,刪除了所有錯誤。但是,測試廣告沒有顯示在我的設備上。我已刪除從Java文件的代碼並修改了xml文件這樣的 - 'code' 'code' – webdev 2012-08-10 12:46:14