Android - 使用蓝牙从sd共享文件

时间:2012-08-28 11:06:42

标签: android file bluetooth send

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

我的步骤是: 1.创建SEND意图。 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();

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

1 个答案:

答案 0 :(得分:0)

我认为您的文件不是File-I/O发布的。

所以..尝试flush() FileOutPutStream ..比如,

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

然后,使用Uri.fromFile(File file)为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();
}