android - Kotlin-共享原始资源中的音频文件

标签 android audio kotlin sharing

我有一个适用于Android的音板应用程序,正在尝试使用户能够通过Messenger,Gmail等在应用程序中共享声音。这是我尝试用于此目的的代码:

分段:

val uri = SoundProvider.getUri(4,(activity as MainActivity).packageName)
val share = Intent(Intent.ACTION_SEND)
share.type = "audio/*"
share.putExtra(Intent.EXTRA_STREAM, uri)
startActivity(Intent.createChooser(share, "Share Sound File"))

getUri函数:
fun getUri(id: Int, packageName: String):Uri{
        val uri = Uri.parse(
            ContentResolver.SCHEME_ANDROID_RESOURCE
                    + File.pathSeparator + File.separator + File.separator
                    + packageName
                    + File.separator
                    + R.raw.random_sound
        )
        return uri
    }

不幸的是,此代码似乎不起作用,当我单击应用程序中的一个共享选项(例如gmail)时,它只会打开一个没有附件的空白电子邮件。与其他应用类似。有谁碰巧知道如何进行这项工作?

最佳答案

我认为这是正确的方法,这意味着连续使用File.pathSeparator 2次而不是3次:

ContentResolver.SCHEME_ANDROID_RESOURCE
                + File.pathSeparator + File.separator
                + packageName
                + File.separator
                + R.raw.random_sound

关于android - Kotlin-共享原始资源中的音频文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58293296/

相关文章:

ios - 如何从NSUserDefaults检索数据?

android - Android RTSP 流媒体协议(protocol)支持多少种音频编解码器?

android - 在ViewPager Webview内实现单击功能

Android;从 SD 卡中选择歌曲并返回路径时出现问题

java - 应用程序主题(操作栏)不尊重您的空间

kotlin - 调用解构声明初始值设定项的 'component1()' 函数所需的不可为空值

android - kotlin 中的 lambda 是如何赋值的

android - 多功能 Instant App 崩溃问题

android - 以编程方式自动静音 Android 手机的音量?

kotlin - 类成员 set(value) 被递归调用......为什么?