0

我试图从我的SDusing发送文件Bluetooth。我正在使用共享意图,我想从我的 SD (. mp3) 发送一个文件。好的,当我打开共享菜单时,我可以发送文件到email, dropbox, whatsapp,但是如果我选择蓝牙,我的设备会显示一条消息“ File null was not sent to ...

我的步骤是: 1. 创建发送意图。2. 将我的文件从 res/raw 复制到 SD 3. 将我的文件添加到 putExtra 4. 删除文件(是临时文件)

编码:

Intent shareIntent=new Intent(android.content.Intent.ACTION_SEND);
        shareIntent.setType("audio/mp3");
        //Copiamos archivo a compartir en la sd
        String baseDir = Environment.getExternalStorageDirectory().getAbsolutePath();
        String fileName = sonidoActual+"-temp.mp3";

        File newSoundFile = new File(baseDir, fileName);

        try {
            byte[] readData = new byte[1024*500];
            InputStream fis = getResources().openRawResource(contexto.getResources().getIdentifier(sonidoActual,"raw", contexto.getPackageName()));
            FileOutputStream fos = new FileOutputStream(newSoundFile);
            int i = fis.read(readData);

            while (i != -1) {
                fos.write(readData, 0, i);
                i = fis.read(readData);
            }

            fos.close();
        } catch (IOException io) {
        }

        ////
        shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.parse(newSoundFile.getAbsolutePath())/*Uri.parse("file:///sdcard/"+fileName)*//*Uri.parse("android.resource://com.genaut.instantbuttonsfreak/raw/"+texto)*/);
        startActivity(Intent.createChooser(shareIntent,getString(R.string.share)));
        //
        newSoundFile.delete();

任何人都可以帮助我吗?我读了很多但没有找到工作方法,对不起我的英语。

4

1 回答 1

0

我认为您的文件不是由File-I/O.

所以.. 试试flush()FileOutPutStream .. 像,

fos.flush();
fos.close();

然后,使用Uri.fromFile(File file)for uri 与 Intent 一起传递。但在将 Uri 传递给 Intent 之前,只需检查文件是否存在。

像,

if(newSoundFile.exist())
{
 shareIntent.putExtra(Intent.EXTRA_STREAM,Uri.fromFile(newSoundFile))
 startActivity(Intent.createChooser(shareIntent,getString(R.string.share)));
 newSoundFile.delete();
}
于 2012-08-28T11:12:59.060 回答