0

SDを使用してからファイルを送信しようとしていますBluetoothmp3共有インテントを使用しています。SD (. )からファイルを送信したいです。共有メニューを開くとファイルを に送信できますがemail, dropbox, whatsapp、Bluetooth を選択すると、デバイスに「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();

誰でもこれで私を助けることができますか?私はたくさん読みましたが、うまくいく方法が見つかりませんでした。申し訳ありませんが私の英語です。

4

1 に答える 1

0

あなたのファイルは によってリリースされていないと思いますFile-I/O

SO .. 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();
}
于 2012-08-28T11:12:59.060 に答える