0

ボタンを押すと写真を撮り、送信ボタンを押すとメールに添付するアプリを作成しようとしています。私が持っているコードは、写真がメールに添付されていることを示していますが、送信したメールを確認しても添付ファイルは送信されません。画像もSDカードに保存されません。

onCreate()でinitialize関数を呼び出して変数を初期化します。また、取得した画像を保存する必要があるSaveImage()関数をどこに配置するかわかりません。onActivityResult()に入れましたが、機能しません。前もって感謝します!

private void initialize() {
    // TODO Auto-generated method stub
    camera = (Button) findViewById(R.id.Picture);
    sendEmail = (Button) findViewById(R.id.SendMessage);
    iv = (ImageView) findViewById(R.id.ImageReturn);
    MessageTyped = (EditText) findViewById(R.id.MessageField);
    sendEmail.setOnClickListener(this);
    camera.setOnClickListener(this);

    pngDir = new File(Environment.getExternalStorageDirectory(),
    // Loose convention inferred from app examples
            "My Images");

    if (!pngDir.exists())
        pngDir.mkdirs();

}

@Override
public void onClick(View v) {

    // TODO Auto-generated method stub

    switch (v.getId()) {

    case R.id.Picture:
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        SaveImage();//<------------------WHERE DOES THIS GO?

        startActivityForResult(i, cameraData);

        break;

    case R.id.SendMessage:

        EditTextToString();

        EmailIntent = new Intent(android.content.Intent.ACTION_SEND);

        EmailIntent.putExtra(Intent.EXTRA_EMAIL,
                new String[] { "bipush.osti@gmail.com" });
        EmailIntent.putExtra(android.content.Intent.EXTRA_TEXT,
                MessageToBeReceived);

        // EmailIntent.setType("message/rfc822");
        EmailIntent.setType("image/jpeg");
        EmailIntent.putExtra(Intent.EXTRA_STREAM, pngUri);

        startActivity(Intent.createChooser(EmailIntent,
                "Choose an Email client :"));
        break;

    }
}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {
        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");
        iv.setImageBitmap(bmp);

    }
}

private void EditTextToString() {
    MessageToBeReceived = MessageTyped.getText().toString();
}

private void SaveImage() {

    File pngFile = new File(pngDir, "jetsam.jpeg");
    // Save file encoded as PNG
    pngUri = Uri.fromFile(pngFile);

}
4

1 に答える 1

0

ACTION_IMAGE_CAPTUREのドキュメントを参照してください!EXTRA_OUTPUT(画像を保存する場所を含むuri)を指定しなかった場合、結果として「小さいサイズの画像がビットマップオブジェクトとして返されます」というメッセージが表示されます。

したがって、画像をリクエストするときにインテントにURIを追加し、同じURIをACTION_SENDに渡します。

case R.id.Picture:
    i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
    i.putExtra(MediaStore.EXTRA_OUTPUT, getUriForNewFile()); // you have to implement youself getUriForNewFile()

    startActivityForResult(i, cameraData);

    break;
于 2012-05-25T15:25:08.590 に答える