Как программно получить объем хранилища приложений в iPhone - PullRequest
18 голосов
/ 07 марта 2012

Я хочу получить размеры хранилища для каждого приложения в iPhone через цель C.
Любая помощь поможет подобным образом .... enter image description here

Ответы [ 3 ]

3 голосов
/ 28 марта 2012

Предполагая, что вы разрабатываете для взломанного устройства (если нет, тогда невозможно получить доступ к приложениям на устройстве), SpringBoard должен иметь предопределенные методы для доступа к метаданным всех установленных приложений. Если вы посмотрите на заголовки SBApplication.h, то есть методы для получения метаданных.

2 голосов
/ 04 февраля 2013
    NSString *folderPath = "give application path here"

Пример: NSString * folderPath = @ "/ private / var / mobile / Applications / 2B63FD7F-2082-415D-A00C-F07C4BE281AA / Example.app";

    NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:folderPath error:nil];

    NSEnumerator *filesEnumerator = [filesArray objectEnumerator];
    NSString *fileName;
    unsigned long long int fileSize = 0;

    while (fileName = [filesEnumerator nextObject])

    {
        NSDictionary *fileDictionary = [[NSFileManager defaultManager] fileAttributesAtPath:[folderPath stringByAppendingPathComponent:fileName] traverseLink:YES];

        NSLog(@" fileDictionary   %@",fileDictionary);

        fileSize += [fileDictionary fileSize];
    }

    NSLog(@" App Name and App size: %@ : %lld", folderPath,fileSize);

если вы хотите найти размер всех приложений, возьмите путь всех приложений в массиве и напишите оператор цикла для пути к папке

   NSArray *applicationsPath="Here array contain all applications path"
   for (int i=0; i<applicationPath.count; i++)
   {
    NSString *folderPath = [applicationPath objectAtIndex:i]

    NSArray *filesArray = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:folderPath error:nil];

    NSEnumerator *filesEnumerator = [filesArray objectEnumerator];
    NSString *fileName;
    unsigned long long int fileSize = 0;

    while (fileName = [filesEnumerator nextObject])

    {
        NSDictionary *fileDictionary = [[NSFileManager defaultManager] fileAttributesAtPath:[folderPath stringByAppendingPathComponent:fileName] traverseLink:YES];

        NSLog(@" fileDictionary   %@",fileDictionary);

        fileSize += [fileDictionary fileSize];
    }

    NSLog(@" App Name and App size: %@ : %lld", folderPath,fileSize);
   }
0 голосов
/ 27 марта 2012

Если устройство не взломано, вы не сможете получить программный доступ к папке каждого приложения.

Это связано с тем, что каждое приложение iOS работает в изолированной среде, что означает, что ваше приложение может иметь доступ ТОЛЬКО к ресурсам в этом каталоге. Если устройство взломано, это требование снимается, и вам предоставляется полный доступ к диску устройства.

...