0

Eclipseに接続されたsamsung sIIIのファイルシステムからイメージを添付しようとしています

コードは次のとおりです。

String ccs[]={cc.getText().toString()};
        String tos[]={to.getText().toString()};
        Intent i=new Intent(Intent.ACTION_SEND_MULTIPLE);
        i.putExtra(Intent.EXTRA_EMAIL, tos);
        i.putExtra(Intent.EXTRA_CC, ccs);
        i.putExtra(Intent.EXTRA_SUBJECT,"my mail");


        i.setType("image/jpeg");
        File ff=new File("/storage/sdcard0/DCIM/Camera/20130609_170758.jpg");
        Uri u=null;
        if(ff.exists())
        {
            Toast.makeText(this, "file is there", Toast.LENGTH_SHORT).show();
             u=Uri.parse("file:///storage/sdcard0/DCIM/Camera/20130609_170758.jpg");
             i.putExtra(Intent.EXTRA_STREAM,u);


        }
        else
            Toast.makeText(this, "no such file", Toast.LENGTH_SHORT).show();



        i.putExtra(Intent.EXTRA_TEXT, mess.getText().toString());
        //i.setType("message/rfc822");
        startActivity(i);

ファイルが存在するというトーストメッセージが表示されますが、添付ファイル付きのメールを送信する画面が表示される前に Gmail アプリが失敗します。私も Uri.fromFile を試しましたが、それも機能していません。私が間違いを犯している場所を親切に更新してください。ありがとう

4

1 に答える 1

0

まず、Android でパスをハードコーディングしないでください。/storage/sdcard0/ほとんどの Android デバイスと、Android 4.2 以降のタブレットのセカンダリ アカウントでは失敗します。Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DCIM)デバイス上の写真ディレクトリを検索するために使用します。

Uri.fromFile()次に、 a の文字列表現を再ハードコーディングして解析するのではなく、必ず を使用Uriしてください。

第 3 に、画像を 1 つだけ送信する場合はACTION_SEND、 ではなくを使用しますACTION_SEND_MULITPLE。逆に、 を使用する場合は、/ について説明されているようACTION_SEND_MULTIPLEに、EXTRA_TEXT/を追加EXTRA_STREAMする必要がありますArrayListACTION_SEND_MULTIPLE

于 2013-09-08T16:55:47.093 に答える