2017-03-02 13 views
1

以下は写真を選択してメールで送信するためのコードですが、私はで、SDカードと内蔵ストレージから写真を選択して送信することはできません。私は全く新しいアンドロイドであり、すでにインターネット上で利用可能な提案を理解することはできません。以下に必要なコード変更とも提供してください。からユーザーから受け取った電子メールで電話番号を送信するにはどうすればいいですか?SDカード、カメラ、内蔵ストレージから写真を選択し、アンドロイドスタジオで電子メールで送信するにはどうすればいいですか?また、電子メールで電話番号を送信するにはどうしたらいいですか?

MainActivity.java

package com.example.android.send_email_app; 

import java.util.ArrayList; 
import android.net.Uri; 
import android.os.Bundle; 
import android.app.Activity; 
import android.content.Intent; 
import android.view.View; 
import android.view.View.OnClickListener; 
import android.widget.ArrayAdapter; 
import android.widget.Button; 
import android.widget.EditText; 
import android.widget.ImageButton; 
import android.widget.ImageView; 
import android.widget.ListView; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    TextView edittextEmailAddress; 
    EditText edittextEmailSubject; 
    EditText edittextEmailText; 
    ImageView btnAddFile, btnSend; 
    ListView listViewFiles; 

    ArrayList<Uri> arrayUri = new ArrayList<Uri>(); 
    ArrayAdapter<Uri> myFileListAdapter; 

    final int RQS_LOADIMAGE = 0; 
    final int RQS_SENDEMAIL = 1; 

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

     edittextEmailAddress = (TextView) findViewById(R.id.email_address); 
     edittextEmailSubject = (EditText)findViewById(R.id.email_subject); 
     edittextEmailText = (EditText)findViewById(R.id.email_text); 
     edittextEmailAddress.setText("[email protected]"); 
     btnAddFile = (ImageView) findViewById(R.id.attachment); 
     btnSend = (ImageView) findViewById(R.id.send); 
     btnAddFile.setOnClickListener(btnAddFileOnClickListener); 
     btnSend.setOnClickListener(btnSendOnClickListener); 

     myFileListAdapter = new ArrayAdapter<Uri>(
       MainActivity.this, 
       android.R.layout.simple_list_item_1, 
       arrayUri); 
     listViewFiles = (ListView)findViewById(R.id.filelist); 
     listViewFiles.setAdapter(myFileListAdapter); 
    } 

    OnClickListener btnAddFileOnClickListener 
      = new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      Intent intent = new Intent(Intent.ACTION_PICK, 
        android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI); 
      startActivityForResult(intent, RQS_LOADIMAGE); 

     }}; 

    OnClickListener btnSendOnClickListener 
      = new OnClickListener(){ 

     @Override 
     public void onClick(View v) { 
      String emailAddress = edittextEmailAddress.getText().toString(); 
      String emailSubject = edittextEmailSubject.getText().toString(); 
      String emailText = edittextEmailText.getText().toString(); 
      String emailAddressList[] = {emailAddress}; 

      Intent intent = new Intent(); 
      intent.putExtra(Intent.EXTRA_EMAIL, emailAddressList); 
      intent.putExtra(Intent.EXTRA_SUBJECT, emailSubject); 
      intent.putExtra(Intent.EXTRA_TEXT, emailText); 

      if(arrayUri.isEmpty()){ 
       //Send email without photo attached 
       intent.setAction(Intent.ACTION_SEND); 
       intent.setType("plain/text"); 
      }else if(arrayUri.size() == 1){ 
       //Send email with ONE photo attached 
       intent.setAction(Intent.ACTION_SEND); 
       intent.putExtra(Intent.EXTRA_STREAM, arrayUri.get(0)); 
       intent.setType("image/*"); 
      }else{ 
       //Send email with MULTI photo attached 
       intent.setAction(Intent.ACTION_SEND_MULTIPLE); 
       intent.putParcelableArrayListExtra(Intent.EXTRA_STREAM, arrayUri); 
       intent.setType("image/*"); 
      } 

      startActivity(Intent.createChooser(intent, "Choose App to send email:")); 

     }}; 

    @Override 
    protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
     // TODO Auto-generated method stub 
     super.onActivityResult(requestCode, resultCode, data); 

     if (resultCode == RESULT_OK){ 
      switch(requestCode){ 
       case RQS_LOADIMAGE: 
        Uri imageUri = data.getData(); 
        arrayUri.add(imageUri); 
        myFileListAdapter.notifyDataSetChanged(); 
        break; 
       case RQS_SENDEMAIL: 
        break; 
      } 
     } 
    } 

} 

activity_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical" 
    android:paddingLeft="16dp" 
    android:paddingRight="16dp" 
    > 


    <TextView 
     android:layout_marginTop="20dp" 
     android:id="@+id/email_txt_view" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Email To:" 
     android:textStyle="bold"/> 
    <TextView 
     android:layout_marginTop="5dp" 
     android:layout_below="@id/email_txt_view" 
     android:id="@+id/email_address" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailAddress" 
     android:text="[email protected]" 
     android:textStyle="bold|italic" 
     android:textColor="@android:color/holo_blue_light"/> 
    <TextView 
     android:layout_marginTop="20dp" 
     android:layout_below="@id/email_address" 
     android:id="@+id/subject_txt_view" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Enter email Subject:" 
     android:textStyle="bold"/> 
    <EditText 
     android:layout_below="@id/subject_txt_view" 
     android:id="@+id/email_subject" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:inputType="textEmailSubject"/> 
    <TextView 
     android:layout_marginTop="20dp" 
     android:layout_below="@id/email_subject" 
     android:id="@+id/emailBody_txt_view" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content" 
     android:text="Enter Text:" 
     android:textStyle="bold"/> 
    <EditText 
     android:layout_below="@id/emailBody_txt_view" 
     android:id="@+id/email_text" 
     android:layout_width="fill_parent" 
     android:layout_height="wrap_content"/> 

    <ImageView 
     android:layout_marginTop="20dp" 
     android:layout_below="@id/email_text" 
     android:id="@+id/attachment" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:src="@drawable/attachment"/> 

    <ImageView 
     android:layout_marginTop="20dp" 
     android:layout_below="@id/email_text" 
     android:layout_toRightOf="@id/attachment" 
     android:id="@+id/send" 
     android:layout_width="60dp" 
     android:layout_height="60dp" 
     android:src="@drawable/send" /> 

    <ListView 
     android:layout_below="@id/send" 
     android:id="@+id/filelist" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content"/> 

</RelativeLayout> 
+0

間違いはありますか?あなたのリストから適切なURIを取得していることを確認してください。 – Piyush

+0

@Piyushカメラから写真を選択して送信できますが、他のものからは送信できません。変更が必要なコードに言及してください! –

+0

一致するコードをデバッグしてください! – Piyush

答えて

0

Sending Email in Android using JavaMail API without using the default/built-in app

この方法を試してみてください...この方法の利点は、あなたがする必要はありませんですメール活動に暗黙的なインテントを送る..あなたは自分のアプリからメールを送ることができます..disadvanあなたはあなたの電子メールの安全性の低いアプリオプションをオンにする必要がありますか?そのリンクを最後までチェックしてください

関連する問題