1

我真的被困在这里,试图在我的 android 应用程序中设置一个带有 ads-admob 的横幅。我已经完成了 main.xml 中的所有布局设置,还在清单文件中使用了权限,尝试了 XML 和 JAVA 方法来显示广告并试图使其工作,但我总是从“无法获取 currentAdManager” Eclipse 中的 logcat。该应用程序也在这里崩溃,但没有 admob 设置也能正常工作。我的 admob SDK 是 GoogleAdMobAdsSdk-6.0.1.jar,我正在使用 phonegap 进行开发。

我注意到命令“import com.google.ads.*;” 没有“AdManager”,因为当我单独插入“import com.google.ads.AdManager;”时,我收到错误消息“无法解析导入 com.google.ads.AdManager”。我的文件:

我的爪哇:

>     package what.car.notes;
>     
>     import android.os.Bundle;
>     import org.apache.cordova.*;
>     import com.google.ads.AdView;
>     import com.google.ads.AdManager; **- ERROR APEARS HERE**
>     import com.google.ads.*;
>     
>     public class Cargeous21forActivity extends DroidGap {
>         /** Called when the activity is first created. */
>         @Override
>         public void onCreate(Bundle savedInstanceState) {
>             super.onCreate(savedInstanceState);
>             super.loadUrl("file:///android_asset/www/index.html");
>             setContentView(R.layout.main);
>             
>             dView adView = (AdView)this.findViewById(R.id.AdView);
>       adView.loadAd(new AdRequest());
>         }
>     }

我的布局文件(main.xml):

>     <?xml version="1.0" encoding="utf-8"?>
>     
>     <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
>         xmlns:myapp="http://schemas.android.com/apk/res/what.car.notes"
>       android:layout_width="fill_parent"
>         android:layout_height="fill_parent"
>         android:orientation="vertical">
>         
>     <com.admob.android.ads.AdView
>     android:id="@+id/AdView"
>     android:layout_width="fill_parent"
>     android:layout_height="wrap_content"
>     myapp:backgroundColor="#000000"
>     myapp:primaryTextColor="#FFFFFF"
>     myapp:secondaryTextColor="#CCCCCC"
>     /> 
>     
>     </LinearLayout>

我的清单:

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="what.car.notes"
android:versionCode="4"
android:versionName="1.3" >

<uses-sdk android:minSdkVersion="7" />
<uses-library
    android:name="com.google.ads.AdManager" />

<supports-screens 
android:largeScreens="true" 
android:normalScreens="true" 
android:smallScreens="true" 
android:resizeable="true" 
android:anyDensity="true" />
<uses-permission android:name="android.permission.CAMERA" />
<uses-permission android:name="android.permission.VIBRATE" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_LOCATION_EXTRA_COMMANDS" />
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> 
<uses-permission android:name="android.permission.BROADCAST_STICKY" />

<application
    android:icon="@drawable/icon"
    android:label="@string/app_name" >

        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>

<meta-data android:value="i've put my correct id here" android:name="ADMOB_PUBLISHER_ID" />

<activity android:name="com.admob.android.ads.AdMobActivity"
android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
android:configChanges="orientation|keyboard|keyboardHidden"
                android:value="SQLite-NDK"  />
        <!-- Track Market installs -->
<receiver android:name="com.admob.android.ads.analytics.InstallReceiver"
android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
</application>
<uses-permission android:name="android.permission.INTERNET" />
</manifest>

最后是 attrs.xml:

> <?xml version="1.0" encoding="utf-8"?> <resources> <declare-styleable
> name="com.admob.android.ads.AdView"> <attr name="backgroundColor"
> format="color" /> <attr name="primaryTextColor" format="color" />
> <attr name="secondaryTextColor" format="color" /> <attr
> name="keywords" format="string" /> <attr name="refreshInterval"
> format="integer" /> </declare-styleable> </resources>

有没有人已经经历过这样的事情?

4

2 回答 2

1

请阅读Android 上的 Google AdMob SDK入门指南。您从中获取该代码的示例来自 Google AdMob 广告 SDK 重写之前的旧 Google 广告 SDK。

我在第一次通过时可以看到的问题:

  1. 您是清单的活动定义不正确。有关正确的 AdActivity 活动定义,请参阅此页面
  2. 您不需要 attrs.xml。SDK 现在包含这些属性。
  3. 我不认为发布者 ID 可以是元数据。您必须在 AdView XML 定义中指定发布商 ID。
  4. 您的 AdView XML 定义需要有一个 adSize。
  5. 新的 Google AdMob SDK 没有 com.google.ads.AdManager 类。
于 2012-06-21T18:53:32.160 回答
0

谢谢埃里克!您的回答帮助我找到了正确的代码。最终代码如下所示:

爪哇:

   import android.os.Bundle;
import org.apache.cordova.*;
import android.app.Activity;
import android.os.Handler;
import com.google.ads.*;
import android.widget.*;
import android.widget.LinearLayout; 


public class myactActivity extends DroidGap {

     private static final String MY_AD_UNIT_ID = "a14fd7e04e46295"; 
     private AdView adView; 
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        super.loadUrl("file:///android_asset/www/index.html");


        //
     // Create the adView 
        adView = new AdView(this, AdSize.BANNER, MY_AD_UNIT_ID); 
        LinearLayout layout = super.root; // this is the only change from the sample 
        // Add the adView to it 
        layout.addView(adView); 
        // Initiate a generic request to load it with an ad 
        adView.loadAd(new AdRequest()); 

    }    
    }

我的布局:

   <?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.GoogleAdView
    android:id="@+id/adView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"  
    ads:adUnitId="xxxxxxxxxxxxxxxxxxxx" 
    ads:adSize="BANNER"
    ads:loadAdOnCreate="true"/> 

</LinearLayout>

从那时起,一切都起作用了……但是!是的,有一个但是... 2 天后,由于令人难以置信的 0,00 美元和 150 个广告征集,admob/google 取消了我的帐户!我听说他们的方法很奇怪,并且无缘无故地删除了开发人员,并且以 0.00 美元和 150 次观看,他们将我从他们的程序中删除。好的部分:我发现其他一些广告服务比 admob 更好,但缺点是我必须重新找出代码......

无论如何,谢谢埃里克!

于 2012-06-29T01:20:37.917 回答