내 앱은 SyncAdapters를 사용하여 백그라운드에서 데이터를 동기화합니다. OS 8.0을 실행하는 장치에서 Android for Work 관리 프로필에 대해 설정 한 경우 addAccountExplicitly를 호출하면 SecurityException이 발생하고 계정을 제대로 추가하지 못합니다.addAccount는 com.google.android.gm이 GET_ACCOUNTS를 수행 할 수 없기 때문에 SecurityException을 명시 적으로 throw합니다.
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)
I가 화소에 8.0을 실행하는 두 GitHub의 프로젝트를 사용하여 고장 재현 : 지문 = 구글/청새치/멀린 : 8.0.0/OPR3.170623.013/4,397,526 여기
호출 스택이다 : 사용자/해제 - 키GitHub의 응용 :
57,103,210는 상기 예외를 발생 재현하는 단계는 :
- 공장 장치를 다시 나타날 때까지 부정기 화면 기다린다.
- 응용 프로그램 android-testdpc를 설치하십시오. Android for Work 관리 프로필에 대한 기기 설정을 완료합니다.
- 정책을 변경하지 말고 장치를 다시 시작하지 마십시오.
- android-BasicSyncAdapter 응용 프로그램을 설치하고 실행하십시오.
- 로그 캣은
을 캡처 나는 am_crash : [7489,0, com.example.android.basicsyncadapter, 950582854,이 java.lang.SecurityException, UID 10075에서 com.google.android.gm은 허용되지 않습니다
- 나는, SecurityException를보고하고는 안드로이드 8.0에서만 장치에서 발생되는 : GET_ACCOUNTS, Parcel.java 1942]
추가 참고 사항을 수행 할 수 있습니다.
먼저 장치를 처음 다시 시작하지 않고도 addAccountExplicitly를 호출하는 방법을 알아 내려고합니다.
이 충돌에 대한 해결책이 있습니까? – bGorle
OS 빌드 8.1에서 실행할 때 SecurityException이 더 이상 발생하지 않는다는 답변을 게시했습니다. –