Làm cách nào để có được cài đặt sử dụng dữ liệu nền cho ứng dụng trong Android? Ngoài ra, chúng tôi có thể thay đổi cài đặt này theo mã không?Cách nhận trạng thái sử dụng dữ liệu Nền ứng dụng bất kỳ trong Android
Trả lời
Note: Root truy cập một mình có thể không đủ
Bắt/thiết lập hạn chế dữ liệu nền đòi hỏi "android.permission.MANAGE_NETWORK_POLICY" permission, which is protection level is "signature". Vì vậy, ứng dụng của bạn phải được ký bằng cùng khóa với nền tảng.
Nhưng dù sao, sau đây làm việc trên kết thúc của tôi (Android 4.2.2/mức API 17, thử nghiệm với Google Chrome):
/** NetworkPolicyManager.POLICY_NONE */
private static final int POLICY_NONE = 0x0;
/** NetworkPolicyManager.POLICY_REJECT_METERED_BACKGROUND */
private static final int POLICY_REJECT_METERED_BACKGROUND = 0x1;
/** Context.NETWORK_POLICY_SERVICE */
private static final String NETWORK_POLICY_SERVICE = "netpolicy";
/** NetworkPolicyManager object*/
private Object mPolicyManager;
// lots of code
mPolicyManager = getSystemService(NETWORK_POLICY_SERVICE);
// moar code
private boolean getAppRestrictBackground() {
try {
ApplicationInfo chrome = getPackageManager().getApplicationInfo("com.android.chrome", 0);
try {
Method getUidPolicy = mPolicyManager.getClass().getMethod("getUidPolicy", int.class);
try {
final int uidPolicy = (Integer) getUidPolicy.invoke(mPolicyManager, chrome.uid);
return (uidPolicy & POLICY_REJECT_METERED_BACKGROUND) != 0;
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return false;
}
private void setAppRestrictBackground(boolean restrictBackground) {
try {
ApplicationInfo chrome = getPackageManager().getApplicationInfo("com.android.chrome", 0);
try {
Method setUidPolicy = mPolicyManager.getClass().getMethod("setUidPolicy", int.class, int.class);
try {
setUidPolicy.invoke(mPolicyManager, chrome.uid, restrictBackground ? POLICY_REJECT_METERED_BACKGROUND : POLICY_NONE);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NullPointerException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
Tài liệu tham khảo:
CẬP NHẬT
Làm thế nào tôi có thể đăng ký ứng dụng của tôi với chính nền tảng?
Bạn phải có khóa nền tảng: không có thủ thuật nào ở đây, bạn chỉ cần có khóa. Xem "Sign your application with your private key" để biết thêm chi tiết. Thông thường, OEM giữ các khóa nền tảng của họ với mức bảo mật cao nhất có thể. Đó là, các nhà phát triển bên thứ ba sẽ không bao giờ có quyền truy cập vào khóa nền tảng. Lưu ý rằng, ngay cả khi bạn nắm giữ khóa nền tảng, bạn sẽ cần phải tạo ứng dụng riêng biệt cho mỗi thiết bị của OEM vì mọi OEM đều sử dụng khóa duy nhất của riêng nó.
Cuối cùng, trừ khi bạn đang làm việc trực tiếp với OEM, nó không đáng để nỗ lực.
Làm thế nào tôi có thể Đăng ký ứng dụng của tôi với phím Nền tảng. –
:) Bạn phải có chìa khóa. – ozbek
Tính năng này chỉ hoạt động trên Thiết bị gốc? Tôi không thể làm như vậy mỗi khi nhận được cùng một lỗi 08-12 13: 18: 43.970: W/System.err (9844): java.lang.NoSuchMethodException: getUidPolicy [int] Trợ giúp Plzzz –
- 1. Android phát hiện trạng thái cảm ứng từ bất kỳ ứng dụng nào
- 2. Sử dụng dữ liệu từ bất kỳ ứng dụng nào
- 3. Android - lưu trạng thái ứng dụng
- 4. Cách thay đổi màu nền của thanh trạng thái android
- 5. Lưu trạng thái ứng dụng trong Node.js
- 6. Duy trì trạng thái trong máy chủ ứng dụng hoặc trong cơ sở dữ liệu?
- 7. Nhận thông báo GCM của Android khi ứng dụng ở trạng thái dừng
- 8. Android: Lưu trạng thái dụ khi ứng dụng được đóng
- 9. Làm thế nào để theo dõi trạng thái khóa bổ trợ toàn cục (trong bất kỳ ứng dụng nào)?
- 10. Bất kỳ lợi ích nào khi sử dụng macro WEXITSTATUS trong C trên phân chia 256 trên trạng thái exit()?
- 11. Cách hiển thị trạng thái "Đang tải" trong Android?
- 12. Trong trạng thái Mua ứng dụng Đang chờ tải lên
- 13. API ứng dụng Spotify: bất kỳ tài liệu nào khác?
- 14. Khi nào trạng thái ứng dụng thuộc về Dữ liệu chính thay vì NSUserDefaults?
- 15. Ứng dụng Ember.js sẽ chuyển hướng để đăng nhập, khi dữ liệu ember nhận được trạng thái http 401
- 16. Cách lưu dữ liệu trong ứng dụng android
- 17. Xóa thanh trạng thái trong ứng dụng của tôi
- 18. Cách nhận trạng thái phản hồi jQuery.ajax?
- 19. SerialPort không nhận được bất kỳ dữ liệu
- 20. Nhận mã trạng thái HTTP trong Android WebView
- 21. Kết nối WPF làAsync Nhận trạng thái
- 22. Cách chụp gói mạng trong Android mà không sử dụng bất kỳ quyền root nào
- 23. Tìm tất cả việc sử dụng trạng thái phiên
- 24. trạng thái phiên, trạng thái ứng dụng trong vòng đời trang?
- 25. cách sử dụng cơ sở dữ liệu đám mây miễn phí với ứng dụng android?
- 26. Cách tạo dữ liệu Con trỏ mà không nhận dữ liệu từ ứng dụng DataBase trong Android?
- 27. Cách nhận dữ liệu nối tiếp bằng cách sử dụng android bluetooth
- 28. Nơi lưu trạng thái trong ứng dụng iPhone
- 29. Khi nào sử dụng bean phiên trạng thái trên bean phiên không trạng thái?
- 30. Cách nhận trạng thái truy vấn đang chạy trong cơ sở dữ liệu postgresql
Bạn đang nhắm mục tiêu các thiết bị gốc? – ozbek
Có cách nào trên thiết bị gốc hoặc không bắt nguồn từ không. API có sẵn không? –