Thông tin đăng nhập APN của Android và Network ProxyInfo phục vụ mục đích khác nhau
Đọc cấu hình proxy mạng qua các giao diện được Android hỗ trợ và giữ thông tin đăng nhập truy cập của nhà mạng tách biệt với tài khoản proxy HTTP.
Ứng dụng Android có thể cần địa chỉ proxy hiện tại mà không sở hữu cài đặt kết nối. Hãy bắt đầu từ giao diện proxy mạng thay vì tìm cột cơ sở dữ liệu có tên user hoặc password.
Cấu hình APN của điện thoại mô tả quyền truy cập của nhà mạng. Các trường tài khoản của nó thuộc cấu hình đó. Chúng không phải kho thông tin đăng nhập chung cho proxy HTTP được chọn trên Wi-Fi, mạng được quản lý hay kết nối riêng của ứng dụng.
| Thông tin cần thiết | Cấu hình liên quan |
|---|---|
| Tài khoản truy cập dữ liệu của nhà mạng | Cài đặt APN, cùng các hạn chế truy cập của nền tảng |
| Proxy HTTP hiện tại của mạng | ConnectivityManager và ProxyInfo |
| Đăng nhập mà proxy được chọn yêu cầu | Luồng xác thực mà ứng dụng khách hỗ trợ và nguồn tài khoản đã được phê duyệt |
Trên phiên bản Android được hỗ trợ, ConnectivityManager.getDefaultProxy() trả về thông tin proxy áp dụng. Kết quả có thể không có. ProxyInfo có thể mô tả điểm cuối trực tiếp hoặc cấu hình PAC, vì vậy hãy kiểm tra hình thức của nó trước khi coi mọi kết quả là cặp máy chủ và cổng.
ProxyInfo không công bố cặp tên người dùng/mật khẩu phổ quát. Nếu dịch vụ được chọn yêu cầu xác thực, hãy lấy tài khoản dự định thông qua cơ chế thông tin đăng nhập mà ứng dụng hỗ trợ. Thử thách proxy và đăng nhập của nhà mạng có thể dùng danh tính hoàn toàn khác nhau.
Điều này cũng tách việc phát hiện khỏi việc sử dụng. Một socket gốc hay SDK có phương thức truyền riêng không trở nên nhận biết proxy chỉ vì ứng dụng đọc được ProxyInfo. Hãy trao tuyến đã chọn cho ứng dụng khách hỗ trợ giao thức và phương thức xác thực của nó.
Các ví dụ cũ truy vấn nhà cung cấp nội dung điện thoại mô tả các bản phát hành và quyền cụ thể của Android. Chúng là bối cảnh lịch sử hữu ích, nhưng không thể biến tài khoản APN thành mật khẩu còn thiếu cho một proxy không liên quan.