web-dev-qa-db-ja.com

PublisherAdView.loadAd()がSecurityExceptionをスローします-getTasks()にはAndroid.permission.GET_TASKSが必要です

昨日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がAPI21で非推奨になったことも承知していますが、このアプリはAPI19を対象としています。

16
Mark McClelland

Googleは、修正がリリースされ、「その特定の例外の発生率が低下し、1週間以内に完全に消えるはずだ」と報告しています。さらに、これはサーバー側の修正であり、Play開発者サービスへのアップグレードは必要ありません。

完全な会話はここから入手できます: https://groups.google.com/forum/#!category-topic/google-admob-ads-sdk/Android/IuSQriNWKps

一方、SecurityExceptionをキャッチして、loadAd()の呼び出しが失敗するのを許可するか、@ dthackerが指摘したように、AndroidManifest.xmlにGET_TASKS権限を含めることができます。この権限を含めることを選択した場合は、API 21をターゲットにしたら、権限が適用されなくなったため、削除することに注意してください(ドキュメント指向のタスクによってプライバシーが漏洩する可能性があるため、提供される情報の量が減ったためと思われます) 。

5
Mark McClelland

これは、マニフェストにGET_TASKSが追加されていないためです。

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

または、API 21で非推奨になっているため、GET_TASKSここにリンクの説明を入力せずに同様の情報を取得する方法の詳細を参照してください

12