如何获取存储在android中res/raw文件夹中的.mp3文件的URI
我有个问题。我想把我的MP3文件分享给Whatsapp,但它不工作!以下是我的共同意向:如何获取存储在android中res/raw文件夹中的.mp3文件的URI,android,audio,android-intent,Android,Audio,Android Intent,我有个问题。我想把我的MP3文件分享给Whatsapp,但它不工作!以下是我的共同意向: public void shareAchieve() { Intent shareAchievement = new Intent(); shareAchievement.setType("audio/*"); shareAchievement.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resou
public void shareAchieve() {
Intent shareAchievement = new Intent();
shareAchievement.setType("audio/*");
shareAchievement.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://de.logtainment.ungesoundboard/" + R.raw.achieve + ".mp3"));
startActivity(Intent.createChooser(shareAchievement, "Teile Längstes Achievement"));
}
但是它不起作用!对不起,我的英语不好,我来自德国。正如@commonware所说的很少有应用程序支持
android:resource
方案
使您的应用程序与所有应用程序兼容
您必须通过此方法将原始资源复制到内部存储器
private String CopyRAWtoSDCard(int raw_id,String sharePath) throws IOException {
InputStream in = getResources().openRawResource(raw_id);
FileOutputStream out = new FileOutputStream(sharePath);
byte[] buff = new byte[1024];
int read = 0;
try {
while ((read = in.read(buff)) > 0) {
out.write(buff, 0, read);
}
} finally {
in.close();
out.close();
}
return sharePath;
}
用下面的代码替换您的方法
public void shareAchieve() {
Intent shareAchievement = new Intent(Intent.ACTION_SEND);
shareAchievement.setType("audio/*");
String sPath= null;
try {
sPath = CopyRAWtoSDCard(R.raw.filename, Environment.getExternalStorageDirectory()+"/filename.mp3");
} catch (IOException e) {
e.printStackTrace();
}
Uri uri = Uri.parse(sPath);
shareAchievement.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
shareAchievement.putExtra(Intent.EXTRA_STREAM,uri);
startActivity(Intent.createChooser(shareAchievement, "Teile Längstes Achievement"));
}
还加
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
您错过了向路径中添加/raw/并更改您的意图,如 改变
Intent shareAchievement= new Intent();
shareAchievement.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://de.logtainment.ungesoundboard/" + R.raw.achieve + ".mp3"));
到
当我从Gmail发送邮件给我时。Gamil说附件无法发送!在Whatsapp也有@FahimGmail还说,附件无法发送@Fahim@logtainment您是否尝试过进行建议的更改请尝试建议的更改并通知我。根据我的说法,在使用后,它应该会起作用。不,我试过了,它不起作用。Gmail无法发送附件@Fahim您使用哪个电子邮件客户端发送电子邮件?Gmail还是其他?你能告诉我吗?对于WhatsApp,不同的代码将适用于不同的Gamil,你两者都在寻找吗?我在我的ShareAcreact中寻找的是sharePath红色!这是什么@IshratI在看到您的屏幕截图后做了一些更改,请查看更新答案。很少有应用程序支持
android:resource
方案。如果WHATAP不支持它,你真的无法强迫他们这么做。共享文件比共享资源更幸运。
Intent shareAchievement= new Intent(Intent.ACTION_SEND);
shareAchievement.putExtra(Intent.EXTRA_STREAM, Uri.parse("android.resource://de.logtainment.ungesoundboard/raw/achieve.mp3"));