1
我已經實現了SyncAdapter以在應用程序中執行項目的同步。當以編程方式或自動請求同步時,Android適配器會正確調用此適配器。權限在取消同步時被拒絕
當我嘗試通過取消選中帳戶和同步設置> {myappccount}>數據和同步> {應用程序項目}下的複選框來手動取消同步操作時,我的同步適配器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)
是否需要爲我的內部提供商添加任何權限?
雖然我不會在我的內部內容提供商設置的權限,但在此代碼中包含我的取消代碼使權限錯誤消失。 謝謝 – Tushar
啊,所以它可能不是android:exported =「true」呢?這也可能導致它。 – Jens