我们可以在Android小部件中显示广告吗?

时间:2012-09-04 05:54:39

标签: android

我正在创建一个免费版的Android小部件,我想在其中展示广告。但是当我们在xml中添加Google Adsense时就像

一样
   <com.google.ads.GoogleAdView
    android:id="@+id/adview"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

它显示以下错误。 (我还添加了jar文件)

09-04 11:14:00.418: W/AppWidgetHostView(2561): updateAppWidget couldn't find any view, using error view
09-04 11:14:00.418: W/AppWidgetHostView(2561): android.view.InflateException: Binary XML file line #16: Error inflating class com.google.ads.GoogleAdView
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:576)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.view.LayoutInflater.rInflate(LayoutInflater.java:618)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.view.LayoutInflater.inflate(LayoutInflater.java:407)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.widget.RemoteViews.apply(RemoteViews.java:930)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.appwidget.AppWidgetHostView.updateAppWidget(AppWidgetHostView.java:219)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.appwidget.AppWidgetHost.updateAppWidgetView(AppWidgetHost.java:250)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.appwidget.AppWidgetHost$UpdateHandler.handleMessage(AppWidgetHost.java:73)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.os.Handler.dispatchMessage(Handler.java:99)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.os.Looper.loop(Looper.java:123)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.app.ActivityThread.main(ActivityThread.java:4627)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at java.lang.reflect.Method.invokeNative(Native Method)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at java.lang.reflect.Method.invoke(Method.java:521)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at dalvik.system.NativeStart.main(Native Method)
09-04 11:14:00.418: W/AppWidgetHostView(2561): Caused by: java.lang.ClassNotFoundException: com.google.ads.GoogleAdView in loader dalvik.system.PathClassLoader[.]
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at dalvik.system.PathClassLoader.findClass(PathClassLoader.java:243)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at java.lang.ClassLoader.loadClass(ClassLoader.java:573)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at java.lang.ClassLoader.loadClass(ClassLoader.java:532)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.view.LayoutInflater.createView(LayoutInflater.java:466)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:565)
09-04 11:14:00.418: W/AppWidgetHostView(2561):  ... 15 more

任何人都建议可以通过其他方式在Android小部件中显示广告。提前谢谢。

2 个答案:

答案 0 :(得分:4)

窗口小部件使用RemoteViews显示其屏幕。 RemoteViews通常要求所有显示类都可用,而不是整个APK已加载。 http://developer.android.com/guide/topics/appwidgets/index.html#CreatingLayout显示了您可以使用的View类:您当前无法使用任何自定义视图,因此现在无法在窗口小部件中使用com.google.ads.GoogleAdView

答案 1 :(得分:1)

实际上,您可以在窗口小部件中显示Custom Native Ads。它们不会强迫您使用任何特定类型的视图,而不是Banner AdsInterstitial ads

但是,请记住,在这种情况下,您将面临另外两个问题:

  1. 您的应用现在负责显示广告内容,处理点击并通知sdk。
  2. 小部件特定问题。您应该记住,当您的应用被系统杀死时,您的内容数据对象可能会被销毁。但是仍会显示小部件上的广告内容。这可能导致app不当行为,因为。
  3. 所以,在决议中:

    我同意现在看起来我们无法在小部件中使用常见广告。但是,如果您只需要显示一些图片或文字,而不需要用户互动或向sdk报告点击次数 - 您可以尝试使用自定义原生广告并将该内容集成到您的小部件中。