我一直在搜索很多解决方案,但是它们没有用。我还不太熟悉Uri,路径在存储文件时传入/传出功能和Inputstreams。
我的项目允许用户从外部存储附加音频文件并获取其Uri
通过按钮setOnclick
acs.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(
lol, "Open Audio (mp3) file"), RQS_OPEN_AUDIO_MP3);
(来自onActivityResult函数)
if (resultCode == RESULT_OK) {
if (requestCode == RQS_OPEN_AUDIO_FX) {
audioFxUri = data.getData();
}
}
之后我要做的是将音频存储到其内部存储中。
您能提供有关将音频文件存储在内部存储器中的代码的帮助吗? 它是否也经历了从文件到字节数组然后从字节数组到文件(具有内部存储位置)的过程?
我只是根据到目前为止所看到的内容。希望您的代码能帮助我。
答案 0 :(得分:0)
您可以将其复制到应用程序文件dir:getApplicationContext().getFilesDir().getAbsolutePath()
public Uri copyFile(Uri uri){
if (uri == null) {
return null;
}
String extension = MimeTypeMap.getSingleton().getExtensionFromMimeType(getApplicationContext().getContentResolver().getType(uri));
String fileName = "some_name" + "." + extension;
File tempFile = new File(getApplicationContext().getFilesDir().getAbsolutePath(), fileName);
try {
boolean fileCreated = tempFile.createNewFile();
if(!fileCreated){
Log.e(LOG_TAG,"error creating file");
}
InputStream inputStream = getApplicationContext().getContentResolver().openInputStream(uri);
if(inputStream != null){
IOUtils.copy(inputStream, new FileOutputStream(tempFile));
}
} catch (IOException | NullPointerException ex) {
Log.d(LOG_TAG, "Exception caught: " + ex.getMessage());
}
return Uri.fromFile(tempFile);
}