java - Android mailto:带附件的链接
问题描述
我遇到了此代码的问题,不知何故我无法将图片附加到电子邮件中。
package com.example.video.MenuItems;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import com.example.video.R;
public class Appointment extends AppCompatActivity {
private static final int PICK_FROM_GALLERY = 101;
EditText etEmail,etSubject,etMessage;
TextView tvAttachment;
String email;
String subject;
String message;
Uri URI = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_appointment);
etEmail = findViewById(R.id.etTo);
etSubject = findViewById(R.id.etSubject);
etMessage = findViewById(R.id.etMessage);
tvAttachment = findViewById(R.id.tvAttachment);
Button attachment = findViewById(R.id.btAttachment);
attachment.setOnClickListener(v -> openFolder());
Button Sent = findViewById(R.id.btnSenTemail);
Sent.setOnClickListener(v -> sendEmail());
}
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK) {
URI = data.getData();
tvAttachment.setText(URI.getLastPathSegment());
tvAttachment.setVisibility(View.VISIBLE);
}
}
public void sendEmail() {
try {
email = etEmail.getText().toString();
subject = etSubject.getText().toString();
message = etMessage.getText().toString();
final Intent emailIntent = new Intent(android.content.Intent.ACTION_SEND);
Intent intent = new Intent(Intent.ACTION_SEND);
intent.setData(Uri.parse("mailto:"));
intent.putExtra(Intent.EXTRA_EMAIL, new String[]{"klavia3000@gmail.com"});
intent.putExtra(Intent.EXTRA_SUBJECT,subject);
intent.putExtra(Intent.EXTRA_TEXT,message);
intent.setType("message/rfc822");
startActivity(Intent.createChooser(intent, "Choose your Email"));
if (URI != null) {
emailIntent.putExtra(Intent.EXTRA_STREAM, URI);
}
emailIntent.putExtra(android.content.Intent.EXTRA_TEXT, message);
this.startActivity(Intent.createChooser(emailIntent, "Sending email..."));
} catch (Throwable t) {
Toast.makeText(this, "Request failed try again: "+ t.toString(), Toast.LENGTH_LONG).show();
}
}
public void openFolder() {
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
intent.putExtra("return-data", true);
startActivityForResult(Intent.createChooser(intent, "Complete action using"), PICK_FROM_GALLERY);
}
}
解决方案
推荐阅读
- laravel - 我的 css/js 没有使用 laravel 在共享托管服务器中编译
- json - Log4j2 JsonTemplateLayout - 更改时区
- javascript - 访问json子数据
- docker - if 检查 Jenkinsfile 上的 docker 镜像的条件
- java - 是否可以获取和比较位于数据库中嵌套 Json 字符串格式列中的元素?通过 SQL 查询
- python - 创建 python 包而不将其发布到 pypi
- react-native - 如何使用 react native 更改设备壁纸(2021 年)
- c# - Unity:只刷新一个脚本?
- r - ggplot2 主题疑难解答(axis.title = element_text(face = "bold", size-12)
- r - R:如何计算截断正态分布的均值和协方差