PublisherAdView.loadAd()抛出SecurityException - getTasks()需要android.permission.GET_TASKS

时间:2015-03-12 19:34:25

标签: android admob google-play-services securityexception

从昨天3月11日开始,我开始看到SecurityException崩溃的高峰。 (请参阅下面的堆栈跟踪。)其他人是否也看到此异常?搜索没有发现任何东西。

我的问题是升级到较新版本的Play服务是否可以解决问题。

这是堆栈:

java.lang.SecurityException: Permission Denial: getTasks() from pid=30319, uid=10157 requires android.permission.GET_TASKS
   at android.os.Parcel.readException(Parcel.java:1474)
   at android.os.Parcel.readException(Parcel.java:1428)
   at android.app.ActivityManagerProxy.getTasks(ActivityManagerNative.java:2726)
   at android.app.ActivityManager.getRunningTasks(ActivityManager.java:791)
   at android.app.ActivityManager.getRunningTasks(ActivityManager.java:827)
   at com.google.android.gms.ads.internal.util.h.a(SourceFile:703)
   at com.google.android.gms.ads.internal.a.a(SourceFile:1634)
   at com.google.android.gms.ads.internal.a.a(SourceFile:530)
   at com.google.android.gms.ads.internal.client.t.onTransact(SourceFile:81)
   at android.os.Binder.transact(Binder.java:361)
   at com.google.android.gms.internal.bd$a$a.a()
   at com.google.android.gms.internal.bh.a()
   at com.google.android.gms.ads.doubleclick.PublisherAdView.loadAd()

我打算在调用loadAd()时发布带有try / catch的补丁。我还计划在不久的将来从PlayServices 6.1.71升级到6.5.87,但我不愿意在补丁发布中引入这种风险,除非它是一个已知的修复程序。

我已在此处向Google报告了该错误:https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/android/IuSQriNWKps

编辑/澄清: 我知道可以通过请求GET_TASKS权限来避免此SecurityException,但我不需要该应用程序的权限,我也不知道为什么AdMob广告应该。

我也知道GET_TASKS自API 21起已被弃用,但此应用针对API 19。

2 个答案:

答案 0 :(得分:12)

这可能是因为您的清单中没有添加GET_TASKS

<uses-permission android:name="android.permission.GET_TASKS" />

或者因为它已在API 21中弃用,请参阅有关如何在没有GET_TASKS enter link description here

的情况下获取类似信息的详细信息

答案 1 :(得分:5)

谷歌报告已经发布修复程序,我们“应该会看到该特定异常的发生率下降,并在一周内完全消失”。此外,它是服务器端修复程序,不需要升级到Play服务。

完整的对话可在此处找到:https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/android/IuSQriNWKps

同时,你可以捕获SecurityException并允许调用loadAd()失败,或者 - 如@dthacker所说 - 你可以在AndroidManifest.xml中包含GET_TASKS权限。如果您选择包含此权限,请注意在您以API 21为目标后将其删除,因为不再强制执行权限(显然是因为他们减少了提供的信息量,现在面向文档的任务可能导致隐私泄露)