2012-03-14 16 views
6

Trong ICS, hiện tại cài đặt "Giới hạn dữ liệu nền" trong Mạng -> Màn hình cài đặt sử dụng dữ liệu.Trong ICS, bạn có thể đặt cài đặt "Hạn chế dữ liệu nền" từ mã (lập trình) không?

Có cách nào để đặt chương trình "Giới hạn dữ liệu nền" cho ứng dụng của tôi không?

HOẶC

Có cách nào để hiển thị cài đặt "Sử dụng dữ liệu" có tùy chọn cho đơn đăng ký của tôi không?

+0

Tôi nghĩ điều này sẽ hữu ích đối với bạn, mặc dù có thể không đủ để trả lời câu hỏi của bạn: http://developer.android.com/sdk/android-4.0.html#NetworkUsage –

+0

Nhà phát triển.android.com/sdk /android-4.0.html#NetworkUsage chỉ là thay thế màn hình sử dụng dữ liệu chung với một ứng dụng cụ thể. Những gì tôi muốn là để đưa lên một chung chung cho phép người dùng truy cập vào các hạn chế được xây dựng trong Android. – pzulw

Trả lời

0

Đối với tùy chọn thứ hai của bạn, bạn có thể nhìn vào ý định

ACTION_MANAGE_NETWORK_USAGE

này "Hành động Hoạt động: Hiển thị cài đặt quản lý mạng sử dụng dữ liệu của một ứng dụng cụ thể."

+0

ACTION_MANAGE_NETWORK_USAGE sẽ hiển thị menu liệt kê các ứng dụng có tác vụ đó trong bộ lọc ý định của chúng. – pzulw

+0

Điều này là để ứng dụng cài đặt Android (sử dụng dữ liệu cụ thể) có thể khởi chạy hoạt động của ứng dụng theo dõi việc sử dụng dữ liệu. – Diederik

3

Bạn có thể bắt đầu từ trang Tổng quan về Data Usage Trang Thông tin công nghệ Android.

Mỗi trình điều khiển thiết bị mạng sẽ báo cáo số liệu thống kê sử dụng của nó theo số xt_qtaguid trong hạt nhân Linux Android-3.0. Sau đó, từ khung công tác, bạn có thể chỉ định các quy tắc bổ sung để hạn chế lưu lượng dữ liệu nền cho một ứng dụng.

Hãy thử cung cấp counterSetUID thông số để com.android.server.NetworkManagementSocketTaggersetKernelCounterSet() phương pháp. Trong trường hợp các giá trị counterSet được xác định trong android.net.NetworkPolicyManagerUID sẽ là id ứng dụng của bạn thu được thông qua ContextWrapper.getApplicationInfo().uid.

Tôi hy vọng điều này giúp bạn bắt đầu.

+0

Tôi đã thử triển khai thực hiện điều này trên thiết bị không bắt nguồn từ sự phản chiếu, vì 'NetworkManagementSocketTagger' không được hiển thị thông qua SDK. 'setKernelCounterSet()' thực hiện, nhưng tôi thấy trong Logcat: 'I/qtaguid (25017): Failed write_ctrl (s 0 10183) res = -1 errno = 1' và' W/NetworkManagementSocketTagger (25017): setKernelCountSet (10183, 0) không thành công với errno -1'. Tôi chưa thử nghiệm trên thiết bị gốc. –

Các vấn đề liên quan