Есть ли способ прикрепить файл любого типа к электронной почте, используя намерения? - PullRequest
0 голосов
/ 01 февраля 2019

Я пытаюсь создать небольшое приложение, в котором пользователь может ввести получателя, тему, сообщение и, если он хочет, также прикрепить файл.Я столкнулся с незначительной проблемой, я не могу выбрать любой файл свободно.Я просматриваю свои папки и нахожу изображения и файлы PDF, но ни одно из них не доступно для щелчка мышью, я не могу выбрать ни одного (по какой-то причине они неактивны).

Мне удалось выбрать файл один раз (не помню, какой это был тип) но я получил ошибку ввода-вывода из приложения Outlook, по какой-то причине он не смог обработать файл.

public class MainActivity extends AppCompatActivity {

private static final int PICKFILE_REQUEST_CODE = 8778;
private EditText mEditTextTo;
private EditText mEditTextSubject;
private EditText mEditTextMessage;
private Button sendBtn;
private Button fileBtn;
private String filePath = null;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mEditTextTo = (EditText)findViewById(R.id.edit_text_to);
    mEditTextSubject = (EditText)findViewById(R.id.edit_text_subject);
    mEditTextMessage = (EditText)findViewById(R.id.edit_text_message);
    sendBtn = (Button)findViewById(R.id.sendBtn);
    fileBtn = (Button)findViewById(R.id.fileBtn);

    sendBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            sendMail();
        }
    });

    fileBtn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("file/*");
            startActivityForResult(intent, PICKFILE_REQUEST_CODE);
        }
    });
}

    private void sendMail() {
        String recepientList = mEditTextTo.getText().toString();
        String[] recepient = recepientList.split(",");
        String subject = mEditTextSubject.getText().toString();
        String message = mEditTextMessage.getText().toString();

        Intent sendEmailIntent = new Intent(Intent.ACTION_SEND);
        sendEmailIntent.putExtra(Intent.EXTRA_EMAIL, recepient);
        sendEmailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
        sendEmailIntent.putExtra(Intent.EXTRA_TEXT, message);

       sendEmailIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(new 
    File(filePath)));
       sendEmailIntent.setType("text/plain");
        startActivity(Intent.createChooser(sendEmailIntent, "Choose email 
    client"));
    }

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent 
data) {
    filePath = data.getDataString();
    super.onActivityResult(requestCode, resultCode, data);
    }
}

1 Ответ

0 голосов
/ 04 февраля 2019

Вы можете использовать ниже код:

Intent intent = new Intent(Intent.ACTION_SEND);
intent.setType("text/plain");
intent.putExtra(Intent.EXTRA_EMAIL, new String[] {"email@example.com"});
intent.putExtra(Intent.EXTRA_SUBJECT, "subject here");
intent.putExtra(Intent.EXTRA_TEXT, "body text");
File root = Environment.getExternalStorageDirectory();
File file = new File(root, xmlFilename);
if (!file.exists() || !file.canRead()) {
    Toast.makeText(this, "Attachment Error", Toast.LENGTH_SHORT).show();
    finish();
    return;
}
Uri.fromFile(file);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Send email..."));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...