Android PackageStats da valores negativos

Estoy usando PackageStats y en la impresión CodeSize de PackageStats, cacheSize, dataSize, algunos datos viene como negativo.

Unas cuantas preguntas:

  • ¿Cómo es esto posible?
  • ¿Cuáles son los escenarios en que codeSize podría ser negativo teniendo en cuenta que el tamaño de apk es de alrededor de 50 MB?
  • Cualquier otra forma que se puede utilizar de forma fiable para extraer información anterior?

Además, para Android N me da "NoSuchMethodException". Así,

  • ¿Se elimina para Android N o hay alguna manera de usarlo?
  • ¿Alguna alternativa que me ayude a calcular los tamaños anteriores?

Código:

PackageManager packageManager = context.getPackageManager(); Method myUserId = UserHandle.class.getDeclaredMethod("myUserId"); int userID = (Integer) myUserId.invoke(packageManager); Method getPackageSizeInfo = packageManager.getClass().getDeclaredMethod("getPackageSizeInfo", String.class, int.class, IPackageStatsObserver.class); getPackageSizeInfo.invoke(packageManager, context.getPackageName(), userID, new IPackageStatsObserver.Stub() { @Override public void onGetStatsCompleted(PackageStats pStats, boolean succeeded) throws RemoteException { long codeSize = pStats.codeSize / MB; //long MB = 1024*1024; long cacheSize = pStats.cacheSize / MB; long dataSize = pStats.dataSize / MB; long appSize = codeSize + cacheSize + dataSize; }; } 

Acaba de probar en API 23/24 y sólo puede instancia.

Estas propiedades external* podrían referirse a la tarjeta SD.

  PackageStats stats = new PackageStats(context.getPackageName()); long codeSize = stats.codeSize + stats.externalCodeSize; long dataSize = stats.dataSize + stats.externalDataSize; long cacheSize = stats.cacheSize + stats.externalCacheSize; long appSize = codeSize + dataSize + cacheSize; 
  • La fecha y hora muestran datos erróneos
  • Convertir mm-dd-aaaa a aaaa-mm-dd
  • El mensaje de HttpPost de Android no enviará su carga útil a través del cable
  • Cómo enviar un evento clave a un texto de edición
  • Convertir cadenas de escape HTML a unicode simple / ASCII
  • Carpeta de activos en Android Studio Unit Test
  • Cómo convertir el archivo jar en apk?
  • WifiP2pManager devolver estado BUSY en CreateGroup
  • Activación de la conexión wifi mediante programación
  • Generación de claves RSA en Android en formato PKCS # 1 en Android
  • File.exists () devuelve false cuando el archivo existe
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.