我的应用使用SyncAdapters在后台同步数据。在运行OS 8.0并为Android for Work托管配置文件设置的设备上,调用addAccountExplicitly会抛出SecurityException并无法正确添加帐户。
这是callstack:
11-28 17:28:00.182 7291-7291/com.example.android.basicsyncadapter E/CreateSyncAccount: Failed
java.lang.SecurityException: com.google.android.gm from uid 10074 not allowed to perform GET_ACCOUNTS
at android.os.Parcel.readException(Parcel.java:1942)
at android.os.Parcel.readException(Parcel.java:1888)
at android.accounts.IAccountManager$Stub$Proxy.addAccountExplicitly(IAccountManager.java:1205)
at android.accounts.AccountManager.addAccountExplicitly(AccountManager.java:875)
at com.example.android.basicsyncadapter.SyncUtils.CreateSyncAccount(SyncUtils.java:58)
at com.example.android.basicsyncadapter.EntryListFragment.onAttach(EntryListFragment.java:148)
我使用在Pixel上运行8.0的两个GitHub项目重现了失败: 指纹=谷歌/马林/马林:8.0.0 / OPR3.170623.013 / 4397526:用户/释放密钥
GitHub应用程序:
以下是重现抛出上述异常的步骤:
我am_crash:[7489,0,com.example.android.basicsyncadapter,950582854,java.lang.SecurityException,来自uid 10075的com.google.android.gm不允许执行GET_ACCOUNTS,Parcel.java,1942] < / p>
附加说明:
我试图找出如何成功调用addAccountExplicitly而无需先重启设备。
答案 0 :(得分:0)
我的Google Pixel设备收到了我安装的8.1更新。使用这两个应用程序重新测试:
然后按照重现的步骤,不再抛出SecurityException。
为了验证测试应用是否已更改以解决问题,我使用指定的8.0 ROM映像刷新了Pixel设备。 Retested和SecurityException以相同的方式抛出。
在OS 8.0版之后,问题似乎已得到解决。