2016-03-29 46 views
14

Tôi đang sử dụng phương pháp freeStorageAndNotify() với sự cho phép android.permission.CLEAR_APP_CACHE để xóa bộ đệm ẩn của tất cả các ứng dụng đã cài đặt. Nhưng phương pháp bắt đầu ném InvocationTargetException từ phiên bản android marshmallow 6.0. Sau khi googling các vấn đề tôi tìm thấy cùng một vấn đề được báo cáo ở đây: Android M reflection method freeStorageAndNotify exception Vì vậy, ở đây kết luận là, freeStorageAndNotify() ngừng hoạt động kể từ khi google đã nâng cấp chữ ký của phương pháp bây giờ để chữ ký | hệ thống. Nhưng bây giờ câu hỏi là làm thế nào các ứng dụng của bên thứ ba khác như 'Làm sạch tổng thể' vẫn có thể xóa bộ đệm ẩn của tất cả các ứng dụng đã cài đặt bằng cách cho phép người dùng truy cập cho thiết bị 6.0?Xóa bộ nhớ cache hệ thống trên android 6.0

+0

Ứng dụng Làm sạch chính không sử dụng quyền truy cập. –

+0

Bạn đã thử [xem trộm] (http://www.decompileandroid.com/) vào APK chưa? – kichik

+0

Bạn đã cố xoá thư mục bộ nhớ cache trực tiếp chưa? (Có lẽ bạn cần quyền truy cập bộ nhớ đọc/ghi, nhưng tôi không chắc chắn bạn có thể làm điều đó) –

Trả lời

0

Trình dọn dẹp hệ thống tôi đang sử dụng có quyền truy cập vào các quyền STORAGE. Quyền này cho phép ứng dụng xóa tất cả dữ liệu trong thư mục lưu trữ bên ngoài được chia sẻ.

http://developer.android.com/reference/android/Manifest.permission_group.html#STORAGE

Tôi không nghĩ rằng bất kỳ ứng dụng của bên thứ 3 thực sự có thể rõ ràng hệ thống bộ nhớ cache nữa trừ khi thiết bị được cắm rễ và các ứng dụng được thiết kế cho các thiết bị bắt rễ.

clean Master permission

clean Master asking for permission

+0

Tôi biết điều đó. Câu hỏi của tôi là làm thế nào "Clean Master" ứng dụng có thể làm điều đó bằng cách lấy sự cho phép truy cập từ người dùng. – Audumbar

+0

Clean Master chỉ nhận quyền STORAGE. –

+0

Làm sạch Master rõ ràng yêu cầu truy cập STORAGE PERMISSION –

-4

những ứng dụng chỉ làm điều tương tự tất cả các thời gian. sử dụng nó trên một thiết bị cũ và một thiết bị mới kết quả là như nhau. trợ giúp duy nhất tôi đã thấy là họ có thể giết hoặc khởi động lại một số quy trình nền, không phải để làm sạch bộ nhớ cache. do đó không có API nào có thể hạn chế thủ thuật của chúng ..

0

Tôi không nghĩ rằng 'Làm chủ' thực sự sử dụng Quyền truy cập để xóa bộ nhớ cache của ứng dụng đã cài đặt. Nhưng nếu bạn quan tâm, bạn có thể đạt được mục tiêu này bằng cách sử dụng AccessibilityService trong đơn đăng ký của mình. Trong lớp học của bạn kéo dài AccessibilityService bạn có callback này:

@Override 
    public void onAccessibilityEvent(AccessibilityEvent aEvent) { 
     AccessibilityNodeInfo rootNode = aEvent.getSource(); 
     //... 
    } 

Ở đây bạn có thể gọi rootNode.findAccessibilityNodeInfosByViewId() hoặc rootNode.findAccessibilityNodeInfosByText(), nó sẽ trả lại toàn bộ phù hợp với AccessibilityNodeInfo đối tượng (sub-node) trong cây. Sau đó, bạn chỉ cần phát hiện trong số đó là Button (node.getClassName()) và gọi subNode.performAction(AccessibilityNodeInfo.ACTION_CLICK). Trên điện thoại Android M, trước tiên bạn cần mở màn hình App Info của hệ thống (bạn có thể tìm hướng dẫn tại đây How can I start android application info screen programmatically?) cho ứng dụng cụ thể và theo sơ đồ được mô tả ở trên, thực hiện các nhấp chuột liên tục trên các nút "Lưu trữ" -> "Xóa bộ nhớ cache ".

Để xóa bộ nhớ cache cho tất cả các ứng dụng đã cài đặt, bạn có thể phải lặp qua tất cả các ứng dụng đã cài đặt (List<ApplicationInfo> installedApplications = context.getPackageManager.getInstalledApplications(0);) và lặp lại quy trình nêu trên.

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