我剛剛開始使用Android編程,並且我實現了一個簡單的遠程服務非常簡單的。我能夠從其他進程綁定到我的服務並來回發送簡單的「ping」和「pong」消息。 (我沒有使用AIDL,存根等。我只是通過Messages
並使用what
字段。)getCallingPid()返回我的PID在onBind()
我正在調查權限,並且遇到問題。在我的onBind()
方法中,checkCallingPermission()
始終返回PERMISSION_DENIED
,即使調用進程確實有問題的權限(通過在該進程中調用checkCallingOrSelfPermission()
進行驗證)。我懷疑這是因爲Binder.getCallingUid()
正在返回服務器進程的PID,而不是調用者。
任何想法我可能做錯了什麼? checkCallingPermission()
應該在服務的onBind()
方法中以這種方式工作,對吧?
謝謝!
這是行不通的。系統緩存粘合劑。嘗試從不同進程綁定多次。 'onBind()'只調用一次。如果您想檢查權限,則必須在聯編程序的AIDL方法定義中實施權限檢查。 – 2015-12-16 22:48:57