0

I have made a feedback form in my android app.

What I want is that I want to get all the text filled in that form (editText) to be delivered to my email address without opening any other app or so.

I was unable to figure out how to do this but then I thought of a way, this is what I have done so far:

EditText etUserLikeResponse = (EditText) findViewById(R.id.user_like_response);
        EditText etUserDontLikeResponse = (EditText) findViewById(R.id.user_dont_like_response);
        EditText etUserOtherFeaturesResponse = (EditText) findViewById(R.id.user_other_features_response);

        String etUserLikeResponseText = etUserLikeResponse.getText().toString();
        String etUserDontLikeResponseText = etUserDontLikeResponse.getText().toString();
        String etUserOtherFeaturesResponseText = etUserOtherFeaturesResponse.getText().toString();

        Uri etUserLikeResponseTextUri = Uri.parse(etUserLikeResponseText);
        Uri etUserDontLikeResponseTextUri = Uri.parse(etUserDontLikeResponseText);
        Uri etUserOtherFeaturesResponseTextUri = Uri.parse(etUserOtherFeaturesResponseText);

        final ArrayList<Uri> userResponseUri = new ArrayList<>();
        userResponseUri.add(etUserLikeResponseTextUri);
        userResponseUri.add(etUserDontLikeResponseTextUri);
        userResponseUri.add(etUserOtherFeaturesResponseTextUri);

        Button btnSendFeedback = (Button) findViewById(R.id.btn_send_feedback);
        btnSendFeedback.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                final Handler handler2 = new Handler();
                handler2.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        Intent userFeedbackIntent = new Intent();
                        userFeedbackIntent.setAction(Intent.ACTION_SEND_MULTIPLE);
                        userFeedbackIntent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, userResponseUri);
                        userFeedbackIntent.setType("message/rfc822");
                        userFeedbackIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{"abc.xyz321ba@gmail.com"});
                        startActivity(userFeedbackIntent);
                    }
                }, 200);
            }
        });

I first captured the text written in EditText & then converted into Uri to do the same as given here: http://developer.android.com/training/sharing/send.html

The problem which I'm encountering now is that when I click on btnSendFeedback and choose Gmail, it says 'Couldn't attach file'.

As I'm a beginner, I'm unable to figure out what am I doing wrong.

Please let me know & if there is some another good way to accomplish this task then please tell about that.

Sorry for bad question formatting.

Thanks.

1 Answers1

0

Ok, seems like you are using Intent.EXTRA_STREAM which involves a 'file', and you don't have any file, don't you? (check this answer: Android: Intent.ACTION_SEND with EXTRA_STREAM doesn't attach any image when choosing Gmail app on htc Hero), So you can create a txt file and then try to attach it to your email.

Other option can be just fill the body of your email (check: Send Email Intent ) with the data that you want to send.


Update : If you want to send an email with the data in the body of your email see Developer.android.com: Email intent

And if you want to avoid other app in the procces you can check this so answer: Sending email in android using javamail api without using the default built in app

Community
  • 1
  • 1
mayo
  • 3,845
  • 1
  • 32
  • 42
  • what I want is not to attach the file anywhere but to send the texts directly to my email address without opening any other app or so. Please let me know how can I do this. –  Nov 22 '15 at 12:24
  • If you want to send an email without open an app you have to program that, wihtout usgin help of other apps, and Intents are just the opposite. Anyway check the updated answer. – mayo Nov 22 '15 at 16:42