2016-03-29 16 views
14

Sto utilizzando il metodo freeStorageAndNotify() con autorizzazione android.permission.CLEAR_APP_CACHE per eliminare la cache di sistema di tutte le applicazioni installate. Ma il metodo ha iniziato a lanciare InvocationTargetException dalla versione android di marshmallow 6.0. Dopo aver cercato su Google ho riscontrato lo stesso problema qui: Android M reflection method freeStorageAndNotify exception Quindi, la conclusione è stata, freeStorageAndNotify() ha smesso di funzionare poiché google ha aumentato il livello di firma del metodo ora a signature | system.Elimina cache di sistema su Android 6.0

Ma ora la domanda è come altre app di terze parti come "Clean master" sono ancora in grado di eliminare la cache di sistema di tutte le applicazioni installate ottenendo il permesso di accessibilità da parte dell'utente per i dispositivi 6.0?

+0

L'app Clean Master non utilizza le autorizzazioni di accessibilità. –

+0

Hai provato [sbirciare] (http://www.decompileandroid.com/) nell'APK? – kichik

+0

Hai provato a eliminare direttamente la cartella cache? (Probabilmente hai bisogno dell'autorizzazione all'archiviazione in lettura/scrittura, ma non sono sicuro che tu possa farlo) –

risposta

0

Il pulitore di sistema che sto utilizzando ha accesso alle autorizzazioni di STORAGE. Questa autorizzazione consente all'autorità dell'app di cancellare tutti i dati nella directory di archiviazione esterna condivisa.

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

non credo che qualsiasi 3rd party applicazione può cache di sistema in realtà chiaro più a meno che il dispositivo si radica e l'applicazione è progettata per i dispositivi radicate.

clean Master permission

clean Master asking for permission

+0

Lo so. La mia domanda è come l'app "Clean Master" è in grado di farlo prendendo il permesso di accessibilità da parte dell'utente. – Audumbar

+0

Clean Master accetta solo il permesso di STORAGE. –

+0

Clean Master richiede espressamente di accedere al PERMESSO DI STOCCAGGIO –

-4

quelle applicazioni solo fanno la stessa cosa per tutto il tempo. usalo su un vecchio dispositivo e un nuovo dispositivo i risultati sono gli stessi. l'unico aiuto che ho visto è che possono uccidere o riavviare alcuni processi in background, non pulire la cache. quindi nessuna API può limitare il loro trucco ..

0

Non penso che "Clean master" utilizzi effettivamente le autorizzazioni di accessibilità per pulire la cache delle app installate. Ma, se sei interessato, questo obiettivo può essere raggiunto usando AccessibilityService nella tua applicazione. All'interno della vostra classe che estende AccessibilityService avete questo callback:

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

Qui è possibile richiamare rootNode.findAccessibilityNodeInfosByViewId() o rootNode.findAccessibilityNodeInfosByText(), tornerà tutti i corrispondenti AccessibilityNodeInfo oggetti (sub-nodi) in albero. Quindi, è sufficiente rilevare quale di questi è Button (node.getClassName()) e chiamare subNode.performAction(AccessibilityNodeInfo.ACTION_CLICK).

Su Android M, è necessario innanzitutto per aprire la schermata del sistema App Info (potete trovare le istruzioni qui How can I start android application info screen programmatically?) per l'applicazione concreta e, dallo schema sopra descritto, effettuare scatti sequenziali sui pulsanti "archiviazione" -> "Cancella cache".

Per cancellare la cache per tutte le app installate, probabilmente è necessario scorrere tutte le app installate (List<ApplicationInfo> installedApplications = context.getPackageManager.getInstalledApplications(0);) e ripetere la procedura sopra menzionata.

Problemi correlati