Tôi có một lớp mở rộng android.os.Handler
. Một thể hiện của trình xử lý này được truyền cho hàm tạo của một Messenger
. Số IBinder
của từ getBinder
được chuyển thành kết quả của sự kiện onBind
trong dịch vụ của tôi. Các tin nhắn được gửi qua trình kết nối từ các ứng dụng từ xa đi đến phương thức handleMessage
của trình xử lý, tuy nhiên, các cuộc gọi đến Binder.getCallingUid
và Binder.getCallingPid
trong phạm vi handleMessage
luôn trả về uid và pid của quy trình dịch vụ (chắc chắn không phải là quá trình tương tự như ứng dụng từ xa). handleMessage
chắc chắn là một phần của giao dịch IPC, phải không? Vậy tôi đã đi sai ở đâu? Tôi cần điều này để làm việc để xác thực các ứng dụng kết nối.getCallingUid/getCallingPid trả lại giá trị uid và pid hiện tại trong Handler.handleMessage
Xin cảm ơn trước.
Sửa
OK. Tôi có cảm giác kinh khủng này rằng handleMessage
không phải là một phần của giao dịch IPC, bởi vì điều đó xảy ra trong các luồng riêng biệt cho AIDL đặt các thông điệp trong hàng đợi cho Messenger
. Có cách nào khác để lấy ID người dùng và ID tiến trình của người gọi không?
Cảm ơn rất nhiều! Thật vậy, có vẻ như sendMessageAtTime cung cấp phản hồi chính xác trên getCallingPid – Boy