2016-03-29 31 views
14

Yüklü tüm uygulamaların sistem önbelleğini silmek için yöntemini kullanarak android.permission.CLEAR_APP_CACHE yöntemini kullanıyorum. Ama yöntem android marshmallow 6.0 sürümünden InvocationTargetException fırlatma başladı. Sorunları inceledikten sonra, aynı sorunun burada bildirildiğini buldum: Android M reflection method freeStorageAndNotify exception Burada, sonuç, yöntemin imza düzeyini şimdi imzayı sisteme yükseltmesi nedeniyle freeStorageAndNotify() çalışmayı durdurdu.Android 6.0 sistem önbelleğini silin

Ancak şimdi soru, 'Temiz ana' gibi diğer üçüncü taraf uygulamaların, 6.0 aygıtlar için kullanıcı tarafından erişilebilirlik izni alınarak, tüm yüklü uygulamaların sistem önbelleğini hala silebilmeleridir.

+0

Clean Master uygulaması, erişilebilirlik izinlerini kullanmaz. –

+0

APK'ya [göz atma] (http://www.decompileandroid.com/) denediniz mi? – kichik

+0

Önbellek klasörünü doğrudan silmeyi denediniz mi? (Muhtemelen okuma/yazma depolama erişim iznine ihtiyacınız var, ancak bunu yapabileceğinizden emin değilim) –

cevap

0

Kullandığım sistem temizleyicisinin DEPOLAMA izinlerine erişimi var. Bu izin, uygulama yetkilisine paylaşılan harici depolama dizindeki tüm verileri temizlemesini sağlar.

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

sanmıyorum herhangi bir 3. parti uygulama şunları yapabilir cihaz köklü ve uygulama köklü cihazlar için tasarlanmış artık sürece aslında açık sistem önbelleği.

clean Master asking for permission

+0

Bunu biliyorum. Sorum, "Temiz Master" uygulamasının, kullanıcıdan erişilebilirlik izni alarak bunu nasıl yapabileceğidir. – Audumbar

+0

Clean Master sadece SAKLAMA iznini alır. –

+0

Clean Master, SAKLAMA İZNİ İZLEME –

-4

bu uygulamalar

clean Master permission sadece her seferinde aynı şeyi yapmak. Eski bir cihazda ve yeni bir cihazda kullanmak sonuçları aynıdır. Gördüğüm tek yardım, önbelleği temizlememek için bazı arka plan işlemlerini öldürebilmeleri veya yeniden başlatabilmeleridir. Bu nedenle, hiçbir API hile kısıtlayamaz ..

0

'Temiz master' aslında yüklü uygulamalar önbelleğini temizlemek için Erişilebilirlik İzinlerini kullanır. Ancak, ilgileniyorsanız, bu hedef uygulamanızda AccessibilityService kullanılarak elde edilebilir.

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

Eğer rootNode.findAccessibilityNodeInfosByViewId() veya rootNode.findAccessibilityNodeInfosByText(), o ağaçtaki tüm eşleşen AccessibilityNodeInfo nesneleri (alt düğümler) dönecektir çağırabilirsiniz: Bu geri arama var AccessibilityService uzanır Sınıfınızla dahilinde . Ardından, hangisinin Button (node.getClassName()) olduğunu algılayıp subNode.performAction(AccessibilityNodeInfo.ACTION_CLICK) numaralı telefonu arayın.

Android M'de, beton uygulaması için sistemin App Info ekranını açmanız (burada How can I start android application info screen programmatically? talimatlarını bulabilirsiniz) ve yukarıda açıklanan şema ile sıralı tıklamaları "Depolama" -> Temizle önbellek".

Yüklü olan tüm uygulamalar için önbelleği temizlemek amacıyla muhtemelen tüm yüklü uygulamalar (List<ApplicationInfo> installedApplications = context.getPackageManager.getInstalledApplications(0);) aracılığıyla yinelemeniz ve yukarıda belirtilen prosedürleri tekrarlamanız gerekir.