android studioで写真を送信できる簡単なメール送信アプリを開発したのですが、このアプリでトースト表示を行っています。
トースト表示はできているのですが1点確認したいことがあるのです。
写真などの添付画像をメールに添付して送信すると、送信ボタンを押した直後にトーストが送信完了と表示さるのですが、実際のメール送信は添付写真がありある程度容量があるので本当にトーストが送信完了と表示された時は送信が完了しているのでしょうか?
また、できればメール送信中⇒メール送信完了のようにトーストを段階を踏んで表示させたいのですが
このような事は可能でしょうか?
お手数ですがアドバイスお願いいたします。
宜しくお願いいたします。
MainActivity.java import androidx.core.app.ActivityCompat; import androidx.core.content.ContextCompat; import android.Manifest; import android.app.Activity; import android.content.ActivityNotFoundException; import android.content.ContentValues; import android.content.Intent; import android.content.pm.PackageManager; import android.database.Cursor; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.view.View; import android.widget.Button; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import java.text.SimpleDateFormat; import java.util.Date; public class MainActivity extends Activity { private String TAG = "MainActivity"; private int CAMERA_REQUEST_CODE = 101; private int CAMERA_PERMISSION_REQUEST_CODE = 102; private Uri imageUri; private String gPath = null; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); ActivityCompat.requestPermissions(this, new String[]{ Manifest.permission.WRITE_EXTERNAL_STORAGE }, 1000); findViewById(R.id.camera).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if (PackageManager.PERMISSION_GRANTED == ContextCompat.checkSelfPermission(MainActivity.this, Manifest.permission.CAMERA)) { takePicture(); } else { ActivityCompat.requestPermissions(MainActivity.this, new String[]{ Manifest.permission.CAMERA }, CAMERA_PERMISSION_REQUEST_CODE); } } }); } @Override public void onRequestPermissionsResult(int requestCode, String permissions[], int[] grantResults) { if (requestCode == CAMERA_PERMISSION_REQUEST_CODE) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { takePicture(); } } } @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == CAMERA_REQUEST_CODE) { Bitmap bitmap = getBitmapFromUri(); if (bitmap != null) { ((ImageView) findViewById(R.id.cameraImage)).setImageBitmap(bitmap); Button sendbutton = findViewById(R.id.send_button); sendbutton.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Picture_send pic_send = new Picture_send(); pic_send.path = gPath; pic_send.start(); showsimpletoast(); } }); } } Button button = (Button) findViewById(R.id.reset); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { ((ImageView)MainActivity.this.findViewById(R.id.cameraImage)).setImageDrawable(null); } }); } private void showsimpletoast() { Toast toast = Toast.makeText(this, "メール送信完了", Toast.LENGTH_LONG); toast.show(); } private void takePicture() { ContentValues content = new ContentValues(); content.put(MediaStore.Images.Media.TITLE, "UseCameraActivityPhoto_" + new SimpleDateFormat("yyyyMMddHHmmss").format(new Date()) + ".jpg"); content.put(MediaStore.Images.Media.MIME_TYPE, "image/jpeg"); imageUri = getContentResolver().insert(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, content); try { Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE_SECURE); takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, imageUri); startActivityForResult(takePictureIntent, CAMERA_REQUEST_CODE); } catch (ActivityNotFoundException e) { Toast.makeText(this,"アプリ無し。", Toast.LENGTH_SHORT).show(); } } private Bitmap getBitmapFromUri() { String path = null; if (imageUri != null) { Cursor cur = getContentResolver().query(imageUri, new String[]{ MediaStore.MediaColumns.DATA }, null, null, null); try { if (cur != null && cur.moveToFirst()) { path = cur.getString(0); gPath = path; } } finally { cur.close(); } } return BitmapFactory.decodeFile(path, new BitmapFactory.Options()); } }
Picture_send.java import java.util.Properties; import javax.activation.DataHandler; import javax.activation.FileDataSource; import javax.mail.Address; import javax.mail.Message; import javax.mail.Multipart; import javax.mail.PasswordAuthentication; import javax.mail.Session; import javax.mail.Transport; import javax.mail.internet.InternetAddress; import javax.mail.internet.MimeBodyPart; import javax.mail.internet.MimeMessage; import javax.mail.internet.MimeMultipart; import javax.mail.internet.MimeUtility; public class Picture_send extends Thread{ String path = null; public void run() { try { Properties props = new Properties(); props.put("mail.smtp.host", "smtp.gmail.com"); props.put("mail.smtp.port", "587"); props.put("mail.smtp.auth", "true"); props.put("mail.smtp.transport.protocol", "smtp"); props.put("mail.smtp.ssl.trust", "*"); props.put("mail.smtp.starttls.enable", "true"); props.put("mail.smtp.connectiontimeout", "10000"); props.put("mail.smtp.timeout", "10000"); Session session = Session.getInstance(props, new javax.mail.Authenticator() { protected PasswordAuthentication getPasswordAuthentication() { return new PasswordAuthentication("********@yahoo.co.jp", "*********"); } }); Message message = new MimeMessage(session); message.setFrom(new InternetAddress("********@yahoo.co.jp", "***")); message.setReplyTo(new Address[]{new InternetAddress("********@yahoo.co.jp")}); message.setRecipients(Message.RecipientType.TO, InternetAddress.parse("********@yahoo.co.jp")); message.setSubject("写真"); MimeBodyPart messageBodypart = new MimeBodyPart(); messageBodypart.setText("写真"); MimeBodyPart takepicture = new MimeBodyPart(); FileDataSource fds = new FileDataSource(path); takepicture.setDataHandler(new DataHandler(fds)); takepicture.setFileName(MimeUtility.encodeWord(fds.getName())); Multipart multipart = new MimeMultipart(); multipart.addBodyPart(messageBodypart); multipart.addBodyPart(takepicture); message.setHeader("Content-Transfer-Encoding", "base64"); message.setContent(multipart); Transport.send(message); } catch (Exception e ) { System.out.print("例外!\r\n"); e.printStackTrace(); } finally { } System.out.print("end: main\r\n"); } }
あなたの回答
tips
プレビュー