Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用Mediastore API保存音频文件会在API 28上引发RemoteException-_Android_Audio_Mediastore - Fatal编程技术网

Android 使用Mediastore API保存音频文件会在API 28上引发RemoteException-

Android 使用Mediastore API保存音频文件会在API 28上引发RemoteException-,android,audio,mediastore,Android,Audio,Mediastore,我没有找到任何官方文档来解释如何使用MediaStore API将音频文件保存在外部存储器上。 在API 29+上,一切正常。在API 28上-我得到以下错误: E/JavaBinder: *** Uncaught remote exception! (Exceptions are not yet supported across processes.) java.lang.StringIndexOutOfBoundsException: String index out of range:

我没有找到任何官方文档来解释如何使用MediaStore API将音频文件保存在外部存储器上。 在API 29+上,一切正常。在API 28上-我得到以下错误:

E/JavaBinder: *** Uncaught remote exception!  (Exceptions are not yet supported across processes.)
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring(String.java:2036)
    at com.android.providers.media.MediaProvider.insertFile(MediaProvider.java:2188)
    at com.android.providers.media.MediaProvider.insertInternal(MediaProvider.java:2592)
    at com.android.providers.media.MediaProvider.insert(MediaProvider.java:1872)
    at android.content.ContentProvider$Transport.insert(ContentProvider.java:266)
    at android.content.ContentProviderNative.onTransact(ContentProviderNative.java:152)
    at android.os.Binder.execTransact(Binder.java:731)
这是我使用的代码(当我调用“insert”时,我得到一个空Uri):

编辑 我也尝试过这样做,但在插入时总是会得到一个空Uri:

val newAudioFileDetails = ContentValues().apply {
        put(MediaStore.Audio.Media.DISPLAY_NAME, name)
        put(MediaStore.Audio.Media.IS_PENDING, 1)

        if (VERSION.SDK_INT < VERSION_CODES.Q) {
            val audioDir = File(Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_MUSIC), "MyNewAlbumName")
            val audioPath = File(audioDir, "$name.mp3").absolutePath
            put(MediaStore.Audio.AudioColumns.DATA, audioPath)
        }
val newAudioFileDetails=ContentValues()。应用{
put(MediaStore.Audio.Media.DISPLAY_NAME,NAME)
put(MediaStore.Audio.Media.IS_挂起,1)
if(VERSION.SDK\u INT
您有一个
StringIndexOutOfBoundsException
...Media.DATA,“数据”
?应该是什么?您必须提供路径。我必须提供什么路径?ContentResolver类引发StringIndexOutOfBoundsException:我只是在返回文件应保存的路径中获得一个空Uri。目录的完整路径。或文件的完整路径。请两者都尝试。
val newAudioFileDetails = ContentValues().apply {
        put(MediaStore.Audio.Media.DISPLAY_NAME, name)
        put(MediaStore.Audio.Media.IS_PENDING, 1)

        if (VERSION.SDK_INT < VERSION_CODES.Q) {
            val audioDir = File(Environment.getExternalStoragePublicDirectory(
                    Environment.DIRECTORY_MUSIC), "MyNewAlbumName")
            val audioPath = File(audioDir, "$name.mp3").absolutePath
            put(MediaStore.Audio.AudioColumns.DATA, audioPath)
        }