39 votes

Android PackageStats donne des valeurs négatives

Je suis à l'aide de PackageStats et sur l'impression de la PackageStats de codeSize, cacheSize, données. datasize, certaines données sont à venir comme négatif.

Quelques questions:

  • Comment est-ce possible?
  • Quels sont les scénarios lorsque codeSize pourrait être négatif compte tenu de la apk taille est d'environ 50 MO?
  • D'une autre façon qui peut être utilisé de manière fiable extraire les informations ci-dessus?

Aussi, pour Android N il me donne "NoSuchMethodException".Donc,

  • Est-il retiré pour Android N ou est-il une façon de l'utiliser?
  • Les solutions de rechange qui pourraient m'aider à calculer les dimensions ci-dessus?

Code:

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;
    };
}

1voto

syslogic Points 749

vient d'essayer l'API 23/24 et je ne peux que l'instance.

ces propriétés external* peuvent faire référence à la carte 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;
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X