私有地为sdcard写应用程序android

时间:2011-09-16 09:48:46

标签: android

我在sdcard中以amr文件格式编写音频数据。

    File file = new File(dir, "test.amr");
    try {
        FileOutputStream f = new FileOutputStream(file);
        f.write(audioData);
        f.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (IOException ex) {
        ex.printStackTrace();
    }

它工作正常,但我的问题是它在其他应用程序中显示,以及在Android OS的默认媒体播放器中。

我的问题是如何在SD卡上写一个只能访问我的应用程序的文件。不适用于设备上的其他应用程序。

感谢。

4 个答案:

答案 0 :(得分:2)

所有人都可以访问SD卡上的文件,你无法改变它。您应该使用internal storage

  

您可以直接在设备的内部存储上保存文件。通过   默认情况下,保存到内部存储器的文件对您来说是私有的   应用程序和其他应用程序无法访问它们(也不能   用户)。

答案 1 :(得分:2)

这是不可能的,所有应用都可以访问SD卡上的所有文件。

要保护文件的私密性,请在应用程序的本地目录中创建它们。 应用程序私人文件夹的位置由以下内容确定:

String dir = getPackageManager().getPackageInfo("com.example.app", 0).applicationInfo.dataDir;

其他选项:在SD卡上的文件夹中创建空的“.nomedia”文件,然后内部文件不会(不应该)显示在媒体播放器中。

答案 2 :(得分:1)

我认为它可以在API 9(android 2.3)或更高版本上使用。从2.3开始,出现了一个名为StorageManager的新类。 OBB文件系统可能满足您的需求。 对不起,我是Android上的绿手,我不能给你一个很好的例子,但是,你可以See the official document here

答案 3 :(得分:0)

在SD卡上创建一个文件夹,将文件存储在那里。

在该文件夹中创建一个名为.nomedia的文件,以隐藏该文件夹中的文件,使其不在其他应用程序中列出。

任何包含名为.nomedia的文件的文件夹都不会被MediaServer扫描,因此不会列在音乐播放器等中。