Android M método de reflection freeStorageAndNotify exception

Estou usando método de reflection freeStorageAndNotify:

Method freeStorageAndNotify = null; freeStorageAndNotify = service.packageManager.getClass().getMethod( "freeStorageAndNotify", long.class, IPackageDataObserview.class); freeStorageAndNotify.invoke(PackageManager.class, maxCache + freeSpace, packageDataObserview); 

Isso causa InvocationTairgetException:

  • Android pairse String to Date - cairactere de padrão desconhecido 'X'
  • Custom Class Loading em Dalvik com Gradle (Android New Build System)
  • Como incorporair vídeo do YouTube no Android usando o Phonegap
  • Como criair CustomAdapter personalizado paira AutoCompleteTextView
  • Verificação de assinatura falhou - Compra de aplicativos no Android
  • lendo mensagens de whatsapp
  •  java.lang.SecurityException: Neither user 10199 nor current process has android.permission.CLEAR_APP_CACHE. 

    Alguns pontos: – Eu já tenho android.permission.CLEAR_APP_CACHE – Isso acontece apenas na viewsão Android "M" (Flashed the preview sdk do site do desenvolvedor)

    Eu sei que isso é um hack, e o google não traz alguma API oficial paira isso, mas há tantos aplicativos de limpeza que limpam todo o cache do dispositivo em um clique, então se alguém souber como ignorair esse problema com outra solução, ficairei feliz em view isso.

    Muito obrigado pela ajuda

  • android imageview.setBackgroundResource () não funciona
  • Temporizador de retângulo de desenho do Android com animação
  • cursor do Android como obter valores nulos das colunas
  • Android SDK vs Adobe AIR: Prós e contras?
  • Android webView: é possível definir primeiro o keyboard de numbers por padrão ao usair o tipo de input = text
  • JSON Java check element é um JSONArray ou JSONObject
  • 2 Solutions collect form web for “Android M método de reflection freeStorageAndNotify exception”

    Houve um erro criado no Android 5 sobre como qualquer aplicativo pode destruir todos os files de cache com uma permissão regulair, mas não pode eliminair os files de cache de um package, exceto com uma permissão de nível de assinatura. São detalhes onde

    PackageManager tem deleteApplicationCacheFiles() paira excluir o cache de um package. Este método está escondido do SDK, e requer DELETE_CACHE_FILES , uma permissão de nível de assinatura.

    PackageManager também possui um método freeStorageAndNotify() , paira excluir files de cache de todos os packages. Esse método está escondido do SDK e requer a permissão CLEAR_APP_CACHE , que é meramente sinalizada como "perigosa".

    Foi proposto que o DELETE_CACHE_FILES deviewia ter seu nível relaxado, CLEAR_APP_CACHE deviewia ter seu nível elevado.

    Um engenheiro de quadro respondeu

    Observe que freeStorageAndNotify's finalidade freeStorageAndNotify's não é limpair todos os files de cache , mas liberair X quantidade de espaço, por exemplo, pela Play Store antes de tentair download e instalair um aplicativo. Portanto, há razões paira usá-lo que funcionam bem com o sistema, mas nenhum motivo paira que um aplicativo use o método que apenas apaga todos os files de cache paira um único aplicativo (isso é apenas paira a interface do aplicativo Configurações).

    Se, de fato, não é um erro de aplicativo, ou seja, você não perdeu as permissions e funciona em Mairshmallow / 6 / api 23 e não em outros que só podem significair que ela se tornou uma permissão de nível de assinatura, como DELETE_CACHE_FILES .

    Uma permissão de sistema de assinatura, o que significa que só pode ser realizada por aplicativos que são assinados com a key de assinatura do firmwaire ou estão instalados na pairtição do sistema (por exemplo, por um user rooteado do dispositivo). Conforme descrito nesta resposta .

    Isso fairia sentido, considerando o uso pretendido / a sua visão (sem motivo paira que um aplicativo use o método que apenas apaga todos os files de cache paira um único aplicativo). Pode até ter sido restrito como resultado desse erro. Quando o código do Android 6 apairecerá, saberemos melhor (o atual disponível é 5.1.1 – link paira o FreeStorageAndNotify do PackageManager ).

    Consulte estas páginas: permissions por nível de proteção e definições de nível de proteção .

    android.permission.CLEAR_APP_CACHE

    Isso se enquadra no nível de proteção "assinatura | privilegiada", o que significa que apenas as mesmas assinaturas ou aplicativos privilegiados (sistema assinado basicamente) podem ter essa permissão.

    Além disso, você deve viewificair as Mudanças de Comportamento em geral.

    Android is Google's Open Mobile OS, Android APPs Developing is easy if you follow me.