2015-09-09 2 views
0

В моем приложении промежуточного программного обеспечения мне нужно создать несколько каталогов и файлов во время выполнения, но это не позволяет сделать это из-за ошибок разрешений.Программа промежуточного программного обеспечения для Android: не удается создать каталог, файловая система только для чтения

Я создал простую программу для репликации сценария:

#include <sys/types.h> 
#include <sys/stat.h> 
#include <unistd.h> 

int main() 
{ 
    struct stat st = {0}; 

    if (stat("/mnt/demo_folder", &st) == -1) { 
     mkdir("/mnt/demo_folder", 0700); 
    } 
    return 0; 
} 

и когда я запускаю его, я получаю unable to create directory /mnt/demo_folder : Read-only file system.

Один из способов решить это ниже.

Вручную, я могу запустить mount -o remount ,rw / один раз на устройстве, и мое приложение никогда не будет иметь проблем с разрешением в будущем. Но поскольку у меня нет доступа к устройствам конечного пользователя, я могу выполнить эту команду, используя system() в самом приложении в начале. Но будет ли это правильным? Может ли кто-нибудь указать на лучшую практику в таком сценарии.

ответ

0

Нет, это неправильный подход.

Системная папка устройств конечных пользователей будет доступна только для чтения. Запуск команды монтирования через систему приведет к тому, что устройство будет находиться в очень уязвимом состоянии, и я не уверен, позволит ли андроид выполнить команду mount.

Правильный подход будет -

  • Объявляет разрешение внешнего хранения записи [WRITE_EXTERNAL_STORAGE] в вашем приложении. Поэтому пользователи будут знать, что это приложение будет записываться в хранилище устройств.
  • Или используйте внутреннее хранилище, но правильный путь должен быть запрошен из приложения и отправлен на native. См. Saving Files из документации для Android.
  • Создайте новую папку во внешнем каталоге с именем, которое четко определяет, что оно принадлежит вашему приложению, поэтому пользователи будут знать, что это за папка, когда они просматривают файлы и папки из других приложений.
  • Вы должны написать все свои файлы и папки в папку, созданную в предыдущей папке.
Смежные вопросы