SyncAdapter를 구현하여 응용 프로그램에서 항목 동기화를 수행했습니다. 이 어댑터는 프로그래밍 방식 또는 자동으로 동기화가 요청되면 Android에서 올바르게 호출됩니다.동기화가 취소 될 때 사용 권한이 거부됩니다.
계정 및 동기화 설정> {myappccount}> 데이터 및 동기화> {app item} 아래의 확인란 선택을 취소하여 동기화 작업을 수동으로 취소하려고하면 동기화 어댑터 onSyncCanceled도 올바르게 호출됩니다.
그러나 내 응용 프로그램이 콘텐츠 공급자 쿼리를 통해 내부 설정을 읽으려고하면 "java.lang.SecurityException : Permission Denial"을 수신합니다. 동일한 쿼리가 정상적인 응용 프로그램 실행 또는 동기화 중에는 잘 작동하지만
다음은 스택 추적입니다.
java.lang.SecurityException: Permission Denial: reading com.my.applications.sync.content.MySettingProvider uri content://com.my.applications.sync.provider.mysetting/currentstateid from pid=0, uid=1000 requires null
at android.content.ContentProvider$Transport.enforceReadPermission(ContentProvider.java:307)
at android.content.ContentProvider$Transport.query(ContentProvider.java:186)
at android.content.ContentResolver.query(ContentResolver.java:262)
at com.my.applications.sync.service.MysyncService.getCurrentServiceUri(MysyncService.java:442)
at com.my.applications.sync.service.MysyncService.cancelSync(MysyncService.java:1723)
at com.my.applications.sync.syncadapter.OtherSyncAdapter.onSyncCanceled(OtherSyncAdapter.java:51)
at android.content.AbstractThreadedSyncAdapter$ISyncAdapterImpl.cancelSync(AbstractThreadedSyncAdapter.java:121)
at android.content.ISyncAdapter$Stub.onTransact(ISyncAdapter.java:78)
at android.os.Binder.execTransact(Binder.java:320)
at dalvik.system.NativeStart.run(Native Method)
내부 콘텐츠 공급자에 대한 권한을 추가해야합니까?
내 내부 콘텐츠 공급자에 권한을 설정하고 있지 않다 있지만, 그러나 :
관련된 호출자의 PID/UID없이 코드를 취소하여 실행#onCancelSync(..)
에서 다음을 시도하십시오 이 코드에 내 취소 코드를 포함하면 사용 권한 오류가 사라졌습니다. 감사합니다 – Tushar아, 그렇게 아마 안드로이드 : 내 보낸 = "사실"? 그럴 수도 있습니다. – Jens