0

私はこれに3日間いましたが、まだ運がありません。写真を撮り、トリミングしてから、Androidのインテント経由でメールを送信しようとしています。

これまでのところ、写真を撮ってトリミングすることができます。ただし、メール部分の部分を設定しようとすると、写真を撮るとすぐにメールの意図がポップアップし、トリミングできなくなります。(Gmailをクリックすると、トリミングがバックグラウンドで実行されます)。

これまでに試しました:

        @Override
    public void onPictureTaken(byte[] arg0, Camera arg1) {

        //Bitmap bitmapPicture = BitmapFactory.decodeByteArray(arg0, 0, arg0.length);   



        OutputStream imageFileOS;
        try {
            imageFileOS = getContentResolver().openOutputStream(uriTarget);
            imageFileOS.write(arg0);
            imageFileOS.flush();
            imageFileOS.close();

            Toast.makeText(DigitalSignature.this, 
                    "Image saved: " + uriTarget.toString(), 
                    Toast.LENGTH_LONG).show();

            String[] recipients = new String[]{"digital.signature@lads.jetdelivery.com", "",};


            Intent intent = new Intent("com.android.camera.action.CROP");
            // this will open all images in the Galery
            intent.setDataAndType(uriTarget, "image/jpeg");
            intent.putExtra("crop", "true");
            // this defines the aspect ration
            intent.putExtra("aspectX", 20);
            intent.putExtra("aspectY", 0);
            // this defines the output bitmap size
            //intent.putExtra("outputX", 256);
            //intent.putExtra("outputY", 256);

            // true to return a Bitmap, false to directly save the cropped iamge
            intent.putExtra("return-data", false);
            //save output image in uri
            intent.putExtra(MediaStore.EXTRA_OUTPUT, uriTarget);
            startActivity(intent);


            Intent intent2 = new Intent(Intent.ACTION_SEND);
            intent2.setType("image/jpeg");
            intent2.putExtra(Intent.EXTRA_EMAIL, recipients);
            intent2.putExtra(Intent.EXTRA_SUBJECT, job);
            intent.putExtra(Intent.EXTRA_STREAM, uriTarget.getPath()); // Attaches image to Gmail


              //File shareImg =  new File(uriTarget);
              //intent.putExtra(Intent.EXTRA_STREAM, uriTarget.fromFile(shareImg));

            try {
                startActivity(intent2);

            } catch (android.content.ActivityNotFoundException ex) {

                Toast.makeText(DigitalSignature.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
            }

誰かが私を正しい方向に導くのを手伝ってくれるでしょうか?

ありがとう、ジョン。

4

1 に答える 1

0

あなたはstartActivityForResultCROPの意図に従わなければならず、結果を受け取った後、あなたはそれを電子メールで送ります。

于 2012-11-08T17:35:41.780 に答える