вложение электронной почты пусто при использовании Android намерения - PullRequest
0 голосов
/ 20 октября 2019

Мне нужно отправить вложение вместе с основной информацией по почте с помощью моего приложения. Но вложение пустое, когда я пытаюсь вызвать почтовую активность с помощью намерения.

Вот код для получения filepath и последующей отправки вложения

public class Pickafile extends AppCompatActivity {
TextView textFile;
static String FilePath;
private static final int PICKFILE_RESULT_CODE = 1;

/**
 * Called when the activity is first created.
 */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_gallery);

    Button buttonPick = (Button) findViewById(R.id.buttonpick);
    Button bp = (Button) findViewById(R.id.proceed);
    textFile = (TextView) findViewById(R.id.textfile);

    buttonPick.setOnClickListener(new Button.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            // TODO Auto-generated method stub

            Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
            intent.setType("file/*");
            startActivityForResult(intent, PICKFILE_RESULT_CODE);

        }
    });

    bp.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent intent = new Intent(Intent.ACTION_SENDTO);
            //intent.setType("text/plain");
            intent.setData(Uri.parse("mailto:"));
            intent.putExtra(Intent.EXTRA_SUBJECT, " Report Particulars for " + MainActivity.name);
            /*File root = Environment.getExternalStorageDirectory();
            File file = new File(root, FilePath);
            if (!file.exists() || !file.canRead()) {
                return;
            }*/
            /*if(FilePath!=null)
            {
                intent.putExtra(Intent.EXTRA_STREAM, FilePath);
            }*/
            intent.putExtra(Intent.EXTRA_TEXT, MainActivity.testfunc());
            intent.putExtra(Intent.EXTRA_STREAM, FilePath);
            //startActivity(Intent.createChooser(intent, "Pick an Email provider"));
            if (intent.resolveActivity(getPackageManager()) != null) {
                startActivity(intent);
            }
        }
    });
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    switch (requestCode) {
        case PICKFILE_RESULT_CODE:
            if (resultCode == RESULT_OK) {
                FilePath = data.getData().getPath();
                textFile.setText(FilePath);
            }
            break;

    }
}
}

testfunc () используется дляполучить тело письма (имя, возраст, телефон и т. д.)

Заранее спасибо!

1 Ответ

0 голосов
/ 20 октября 2019

Вы должны проверить журнал, если есть какие-либо ошибки. Возможный случай: 1. Файл слишком большой, превышает максимальный размер вложения электронной почты (20 МБ для Gmail). 2. Отсутствует разрешение READ_EXTERNAL_STORAGE, если файл сохранен во внешнем хранилище. 3. Отсутствует file_provider в манифесте

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...