我在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卡上写一个只能访问我的应用程序的文件。不适用于设备上的其他应用程序。
感谢。
答案 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扫描,因此不会列在音乐播放器等中。