我們有一個Android天氣應用程序,該應用程序還提供了一個小部件。 小部件顯示當前用戶位置的當前時間和天氣。logcat中缺少Google服務權限
如果顯示器處於活動狀態,則每分鐘更新一次窗口小部件時鐘(通過AlarmManager),天氣數據的間隔時間更長。有時小部件「凍結」。我們能夠追蹤到下一次沒有設置檢查的警報,但是沒有線索。
現在我們在受影響的設備的設備日誌發現以下警告:
03-12 10:15:44.803 771 4958 W ActivityManager: Permission Denial: opening provider com.google.android.gsf.gservices.GservicesProvider from ProcessRecord{41a4d028 25012:com.my.app/u0a88} (pid=25012, uid=10088) requires com.google.android.providers.gsf.permission.READ_GSERVICES or com.google.android.providers.gsf.permission.WRITE_GSERVICES
這開始於在時鐘應該已經更新的時間恰好出現。然後重複該消息幾次,直到ActivityManager終止該過程。
我們使用Google Play定位服務獲取用戶的當前(或最後知道的)位置。我發現引用了服務的版本4.2(here和https://stackoverflow.com/questions/22682538/when-to-use-read-gservices-permission)中可能導致此錯誤的錯誤,但設備版本6.7.76安裝。
還有一件需要考慮的事情是該設備正在運行Cyanogenmod,雖然卡住的小部件問題也發生在具有「普通」Android的設備上。
任何提示可能會導致此權限錯誤非常感激。謝謝!
編輯:小部件和應用程序在這個和許多其他設備上正常工作,直到出現警告。 Google文檔也沒有提到你需要獲得這些權限。實際上,根據現場搜索,唯一提及的是here in this document,但頁面本身沒有提及READ_GSERVICES
。
是不是您引用的錯誤消息而不言自明? – 2015-03-13 15:03:32
是的,但不是爲什麼它沒有出現之前,爲什麼谷歌文檔沒有提及這些權限以及爲什麼它在數百萬其他設備上工作。編輯:在大多數情況下,它在大多數情況下都是有效的。它也適用於此設備一段時間。 – Cornelius 2015-03-13 15:10:50