【问题标题】:How to create hidden directory in android?如何在android中创建隐藏目录?
【发布时间】:2017-05-09 03:55:14
【问题描述】:

我正在开发一个应用程序,在该应用程序中我创建了一些通过我的应用程序访问的目录我想隐藏该目录以确保安全。这样用户只能在应用程序内访问它们,而不能在应用程序之外访问它们应用程序就像通过文件管理器一样。 任何帮助表示赞赏。 不要重复,因为我搜索了所有答案,但没有人为我工作。

【问题讨论】:

    标签: android file storage


    【解决方案1】:

    只是在文件夹名称前添加一个点不会保护它。它仅对用户不可见。它仍然可以从应用程序访问,包括文件管理器和用户。默认情况下,它只是被大多数文件管理器隐藏。

    出于安全考虑,您要隐藏文件,因此应使用 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


    您还可以加密您的文件并将加密密钥存储在 android Keystore 中。

    Here 是关于 android 中文件加密的一个很好的答案。
    Official guide 关于 Android Keystore。

    【讨论】:

    • 感谢您的回复,当用户尝试在应用程序之外访问它们时,我可以让我的文件无法访问,这样用户在应用程序之外就看不到它们怎么可能?
    • 如果您使用Context.MODE_PRIVATE 将它们存储在内部存储中,用户应该无法看到该文件,因为我认为他无法打开存储它的目录。
    【解决方案2】:

    明确“您要创建其他应用程序无法访问的目录或文件夹”(这是您的应用程序文件夹)或在任何位置创建文件夹,但它对您隐藏

    对于第一个解决方案是 -

    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/Data/Your.Package.Name/FolderName/FileName

    第二个解决方案 - 只需更改文件名

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

    如果你想同时实现这两者,而不仅仅是替换

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

    【讨论】:

      【解决方案3】:

      只需写目录名,后跟一个点(。) 示例:

      .myDir or .myDir1
      

      因此这些目录将不会通过文件管理器可见。在访问这些目录时,仅使用 dot(.) 调用它们 示例:

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

      文件名也可以这样

      【讨论】:

      • 发布您的代码或检查您的设备中的“显示隐藏文件”是否已选中,如果是,请取消选中
      【解决方案4】:

      用于Android中的隐藏文件夹

      您的文件夹名称是MyApplicationFolder,然后您需要在文件夹名称前添加(.),如。我的应用程序文件夹

      所以当文件夹被创建时,文件夹是隐藏模式的图像、视频等,但它会在 FileManager 中可见。

      【讨论】:

      • 我怎样才能让它从任何地方隐藏起来,只在应用程序中可见。
      • 其实你不能这样做,但你可以让你的文件夹位置 其他人无法理解,例如:app/xyz/local/example... 像这样
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-07-12
      • 1970-01-01
      • 1970-01-01
      • 2012-03-01
      • 2021-06-29
      相关资源
      最近更新 更多