私のアプリはSyncAdaptersを使用してバックグラウンドでデータを同期します。 OS 8.0を実行しているデバイスでAndroid for Work管理プロファイル用に設定した場合、addAccountExplicitlyを呼び出すとSecurityExceptionがスローされ、正しくアカウントを追加できません。ここでaddAccountは、com.google.android.gmがGET_ACCOUNTSを実行できないため、SecurityExceptionをスローします。
は、コールスタックです:
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)
私はピクセルで8.0を実行している2つのGitHubのプロジェクトを使用して、障害を再現しています 指紋=グーグル/マーリン/マーリン:8.0.0/OPR3.170623.013/4397526を:ユーザー/解除 - キー
GitHubのアプリケーション:
上記の例外をスロー再現する手順は、次のとおりです
- 工場では、デバイスをリセットし、表示されるように、アウトオブボックスの画面を待ちます。
- アプリケーションandroid-testdpcをインストールします。 Android for Work管理プロファイルのデバイスの設定を完了します。
- ポリシーを変更しないでください。デバイスを再起動しないでください。
- アプリケーションandroid-BasicSyncAdapterをインストールして起動します。
- Logcatは
をキャプチャします私はam_crash:[7489,0、com.example.android.basicsyncadapter、950582854、java.lang.SecurityException、UID 10075からcom.google.android.gmが許可されていませんGET_ACCOUNTS、Parcel.java、1942]
追加メモ実行する:
- を私は唯一のAndroid 8.0デバイス上でスローされるSecurityExceptionを見ています。
- android-BasicSyncAdapterを起動する前にデバイスを再起動しても、SecurityExceptionはスローされません。現在、ユーザーのために提案された回避策。
最初にデバイスを再起動しなくても、addAccountExplicitlyを正常に呼び出す方法を理解しようとしています。
このクラッシュの解決策はありますか? – bGorle
OSビルド8.1で実行中にSecurityExceptionがスローされなくなったという回答を投稿しました。 –