如何将文件放入应用程序专用文件夹?

时间:2018-08-01 09:01:46

标签: android android-external-storage

我的应用程序将嵌入一些mp3歌曲

当前,我将mp3放到原始文件夹中,并使用此方法播放

MediaPlayer p= new MediaPlayer();
public void playMusic(String file){
    Uri uri=Uri.parse("android.resource://" + getPackageName() + "/raw/"+file);
    if(uri!=null) {
        p.setAudioStreamType(AudioManager.STREAM_MUSIC);
        try {
            p.setDataSource(getApplicationContext(), uri);
        } catch (IllegalArgumentException e) {
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        } catch (SecurityException e) {
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        } catch (IllegalStateException e) {
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            p.prepare();
        } catch (IllegalStateException e) {
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        } catch (IOException e) {
            Toast.makeText(getApplicationContext(), e.getMessage(), Toast.LENGTH_SHORT).show();
        }
        p.start();
    }
}

如果文件位于原始文件夹中,则无法删除,重命名,列出应用程序中的子文件夹

如何将文件放在应用程序专用文件夹中,然后我可以使用getExternalFilesDir访问这些文件?

1 个答案:

答案 0 :(得分:0)

根据定义,专用文件夹 getExternalFilesDir 相反。

我认为您已经在做正确的事。

您必须注意以下几点:

  • 嵌入式资源是静态的并且是不可变的。像可绘制对象,值,字符串等一样,您可以将数据存储在原始目录中,但是在运行时,您将无法对其进行修改
  • 动态或实时资源存储在您想要的see storage guide
  • 位置

通过这种方式,您可以将资源嵌入原始目录中,例如,在首次启动时,将这些数据存储在内部存储中。