首页 > 解决方案 > Android Studio 音频共享问题

问题描述

b1.setOnLongClickListener(new View.OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            Uri uri = Uri.parse("android.resource://haydo.kufurbaz.kfrbazhaydosesleri/raw/aaaww.mp3");
            Intent myınIntent = new Intent(Intent.ACTION_SEND);
            myınIntent.setType("audio/*");
            String sharebody = "Your body here";
            myınIntent.putExtra(Intent.EXTRA_STREAM,uri);
            startActivity(Intent.createChooser(myınIntent,"Share using"));
            return true;
        }
    });

例如,当我选择在 GMail 上共享它时,它会显示“无法附加空文件”之类的内容。看起来我没有得到正确的文件路径,所以我基本上什么都不分享。我究竟做错了什么?

任何帮助将非常感激。

标签: androidandroid-studio

解决方案


重复的问题

Android 将文件附加到 GMAIL - 无法附加空文件

他们如何解决问题?通过@guifgdeo

好的,经过大量研究并拦截了一些 Intent,现在可以开始工作了。

我所要做的就是将 file:/// 更改为 content://。

我是根据来自 Android 的以下信息执行此操作的:https ://developer.android.com/reference/android/support/v4/content/FileProvider.html

唯一的主要变化是我使用了 /sdcard/file.ext 的硬编码路径。另外,线

getUriForFile(getContext(), "com.mydomain.fileprovider", newFile);

改为

Uri contentUri = FileProvider.getUriForFile(this, "com.mydomain.fileprovider", newFile);

还必须包括:

intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
i.setData(contentUri);

我真的不明白为什么我必须从 File 更改为 Content,但在此之后,文件现在又被附加了!如果您遇到此问题,请查看链接,并且不要忘记需要创建的新 .xml。


推荐阅读