我想做的是一个从数据库中读取并播放声音的应用程序。我已经创建了数据库,并且可以从res/raw文件夹播放声音。然而,有成千上万个要播放的文件,一些新的文件将成为应用程序的一部分,其他文件将在未来被删除。因此,每次添加一个简单的文件都会让我下载整个应用程序(大约1 GB)(或者我错了?)。相反,我考虑从SD卡中读取Excel文件并播放声音。但是我不能...据我所知:
我将文件放入/storage/emulated/0/Android/data/my_package_folder/files文件夹中。我已经阅读了很多主题,但没有什么帮助我。除了其特定于包的目录之外,应用程序不允许写入(删除、修改...)外部存储。
Environment.MEDIA_MOUNTED.equals(extStorageState) //returns true
Environment.MEDIA_MOUNTED_READ_ONLY.equals(extStorageState) //returns false
我尝试了几种方法来创建新的文件对象或使用MediaPlayer播放声音(如我之前所说,播放res/raw文件没有问题),但是file.exists始终返回false或声音无法播放:
String filePath = getExternalFilesDir(null) + "/myfile.mp3"; //returns correct file path
File file = new File(filePath);
或者
File file = new File(getExternalFilesDir(null).getPath(), "myfile.mp3");
或者
MediaPlayer mp;
mp = MediaPlayer.create(this, Uri.parse(getExternalFilesDir(null).getPath() + "/myfile.mp3"));
minSdkVersion被设置为19,因此我不需要在清单中添加那一行:
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
我已经包含了那行代码,但是没有任何变化:
<uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />
我也尝试使用其他文件扩展名来做这件事。此外,这里提供的解决方案并没有帮助。我的手机是三星Galaxy Grand Prime(SM-G530FZ),Android版本为5.0.2。请帮忙,谢谢! :)