2016-12-23 5 views
4

Я работаю над приложением, в котором я создал какую-то директорию, к которой я обращаюсь через мое приложение. Я хочу, чтобы этот каталог был скрыт для целей безопасности. Таким образом, что пользователь может получить к ним доступ только в приложении, он не обращается к ним за пределами приложения как в файловом менеджере. Любая помощь приветствуется. Не делайте его дублировать, потому что я ищу весь ответ, но никто не работал на меня.Как создать скрытый каталог в Android?

ответ

0

просто написать имя каталога, за которым следует точка пример (.):

.myDir or .myDir1 

так что эти каталоги не будут видны через файловый менеджер. И при обращении эти каталоги называют их с помощью точки только пример (.):

"/path/to/folder/.myDir/" 

То же самое можно сделать для файла

+0

сделал то же, но не работает. – Champandorid

+0

опубликуйте свой код или проверьте, что на вашем устройстве «show hided file» отмечен, если он снят с него. – knownUnknown

0

Для Скрытие папок в Android

Имя папки является MyApplicationFolder то вам нужно добавить (.) Dot перед именем папки .MyApplicationFolder.

Итак, когда папка создана, папка скрыта для изображений, видео и т. Д. Внутри, но она будет видна в FileManager.

+0

Как я могу сделать его скрытым от везде и только видимым только в приложении. – Champandorid

+0

На самом деле вы не можете сделать этого, но вы можете сделать свое ** местоположение папки **, которое не может быть понято другим, например, например: app/xyz/local/example ... Нравится –

1

быть ясно, «Вы хотите создать каталог или папку, которая не доступна для других приложений» (Какая папка приложение) или создать папку в любом месте, но это скрыть от вашего

Для Первое решение -

public static File saveFileInAppDirectory(Context context,byte[] inpute, String directoryName,String fileName){ 
     File mypath; 
     File directory = new File(context.getExternalFilesDir(
       Environment.DIRECTORY_PICTURES), directoryName); 
     if (!directory.mkdirs()) { 
      directory.mkdir(); 
     } 
     mypath = new File(directory, fileName); 
     try { 
      InputStream is = new ByteArrayInputStream(inpute); 
      FileOutputStream f = new FileOutputStream(mypath); 
      byte[] buffer = new byte[1024]; 
      int len1 = 0; 
      while ((len1 = is.read(buffer)) > 0) { 
       f.write(buffer, 0, len1); 
      } 
      f.close(); 

     } catch (Exception e) { 
      Log.e("SAVE_IMAGE", e.getMessage(), e); 
      e.printStackTrace(); 
     } 

     return mypath; 
    } 

Это создаст директорию вашего приложения Путь к папке - Android/Data/Данные/Your.Package.Name/FolderName/FileName

для второго решения - просто измените имя файла

File mypath = new File(directory, "."+fileName);

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

new File(directory, fileName); with new File(directory, "."+fileName); 
2

Просто присоединяя точку перед именем папки не будет защищать его. Он невидим для пользователя. Его все равно можно получить из приложений, включая файловых менеджеров и, следовательно, пользователей. По умолчанию это просто скрыто большинством файловых менеджеров.

Как вы хотите скрыть файлы для целей безопасности, вы должны использовать внутреннее хранилище Android.

Из официального руководства для разработчиков Android:

Вы можете сохранять файлы непосредственно на внутреннюю память устройства. По умолчанию файлы, сохраненные во внутреннем хранилище, являются приватными для вашего приложения, а другие приложения не могут получить к ним доступ (а также не могут). Когда пользователь удаляет ваше приложение, эти файлы удаляются.

Пример:

String FILENAME = "hello_file"; 
String string = "hello world!"; 

FileOutputStream fos = openFileOutput(FILENAME, Context.MODE_PRIVATE); 
fos.write(string.getBytes()); 
fos.close(); 

Android developer guide


Вы также можете зашифровать файлы и сохранить ключ шифрования в андроида хранилище ключей.

Here - хороший ответ на вопрос о шифровании файлов в android.
Official guide относительно Android Keystore.

+0

Спасибо за ваш ответ, могу ли я сделать файл недоступным когда пользователь пытается получить доступ к ним за пределами приложения, так что пользователь не может видеть их вне приложения, как это возможно? – Champandorid

+0

Если вы храните их во внутреннем хранилище с помощью 'Context.MODE_PRIVATE', пользователь не должен видеть файл, так как он не может открыть каталог, в котором он хранится. – schrej

Смежные вопросы