ارسال ایمیل با Attachment (فایل) در اندروید
سلام دوستان در این سری از آموزش برنامه نویسی اندروید به آموزش ارسال ایمیل با Attachment (فایل) در اندروید می پردازیم قبلتر آموزش ارسال ایمیل با دو سرویس مختلف با استفاده از کتاب خانه بدون استفاده از کتاب خانه را برای شما قرار دادیم امروز به ارسال فایل با استفاده از ایمیل می پردازیم با ما همراه باشید.
ابتدا وارد AndroidManifest.xml شده و دسترسی های زیر را به آن اضافه کنید.
1 2 3 4 | <uses-permission android:name="android.permission.INTERNET" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_INTERNAL_STORAGE" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> |
وارد فایل activity_main.xml شده و کدهای زیر را در آن قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 | <ScrollView 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:padding="5dp" tools:context=".MainActivity" > <RelativeLayout android:layout_width="match_parent" android:layout_height="match_parent" android:layout_margin="5dp" android:padding="5dp" > <EditText android:id="@+id/editTextTo" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentLeft="true" android:layout_alignParentTop="true" android:layout_margin="5dp" android:hint="Email Address!" android:inputType="textEmailAddress" android:singleLine="true" /> <EditText android:id="@+id/editTextSubject" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@id/editTextTo" android:layout_margin="5dp" android:hint="Subject" android:singleLine="true" /> <EditText android:id="@+id/editTextMessage" android:layout_width="match_parent" android:layout_height="200dp" android:layout_below="@id/editTextSubject" android:layout_margin="5dp" android:gravity="top|left" android:hint="type message here!" android:inputType="textMultiLine" /> <Button android:id="@+id/buttonSend" android:layout_width="80dp" android:layout_height="50dp" android:layout_below="@id/editTextMessage" android:layout_margin="5dp" android:text="Send" /> <Button android:id="@+id/buttonAttachment" android:layout_width="wrap_content" android:layout_height="50dp" android:layout_alignParentRight="true" android:layout_alignParentTop="true" android:text="attachment" /> </RelativeLayout> </ScrollView> |
کد با شکلی همانند زیر را ایجاد می کند.
و در آخر در MainActivity.java کدهای زیر را قرار دهید.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 | package ir.programchi; import android.app.Activity; import android.content.Intent; import android.database.Cursor; import android.net.Uri; import android.os.Bundle; import android.provider.MediaStore; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.Toast; /** * * @author Jefferson * */ public class MainActivity extends Activity implements OnClickListener { EditText editTextEmail, editTextSubject, editTextMessage; Button btnSend, btnAttachment; String email, subject, message, attachmentFile; Uri URI = null; private static final int PICK_FROM_GALLERY = 101; int columnIndex; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); editTextEmail = (EditText) findViewById(R.id.editTextTo); editTextSubject = (EditText) findViewById(R.id.editTextSubject); editTextMessage = (EditText) findViewById(R.id.editTextMessage); btnAttachment = (Button) findViewById(R.id.buttonAttachment); btnSend = (Button) findViewById(R.id.buttonSend); btnSend.setOnClickListener(this); btnAttachment.setOnClickListener(this); } protected void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == PICK_FROM_GALLERY && resultCode == RESULT_OK) { /** * Get Path */ Uri selectedImage = data.getData(); String[] filePathColumn = { MediaStore.Images.Media.DATA }; Cursor cursor = getContentResolver().query(selectedImage,filePathColumn, null, null, null); cursor.moveToFirst(); columnIndex = cursor.getColumnIndex(filePathColumn[0]); attachmentFile = cursor.getString(columnIndex); Log.e("Attachment Path:", attachmentFile); URI = Uri.parse("file://" + attachmentFile); cursor.close(); } } @Override public void onClick(View v) { if (v == btnAttachment) { openGallery(); } if (v == btnSend) { try { email = editTextEmail.getText().toString(); subject = editTextSubject.getText().toString(); message = editTextMessage.getText().toString(); final Intent emailIntent = new Intent( android.content.Intent.ACTION_SEND); emailIntent.setType("plain/text"); emailIntent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] { email }); emailIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, subject); 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 openGallery() { 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); } } |
در بالا با کلیک بروی attachment باید یک فایل را انتخاب کنید سپس فیلد ها رو پر کرده و ارسال را بزنید بعد از کلیک برنامه به برنامه های واسط پاس داده می شود و ارسال می شود.
این آموزش هم به پایان رسید.
موفق و پیروز باشید.
سلام
برای اتچ کردن فایل نوع فایل مهم نیست که چی باشد منظور عکس و فایل pdfو… مهم نیست یا محدودیت دارد؟
مهم نیست
خیلی ممنون.ایا میشه مثل اموزش قبلی این هم طوری باشه مثل سرویس کار کنه.من میخوام هر نیم ساعت گزارش کارو که توی فایل پاور پینت هست رو به ایمیل صاحب کار بفرسته
بله باید یک سرویس و یک BroadCast ایجاد کنید اما نمی توان آن را در background ارسال کرد باید از همان آموزش قبلی استفاده کنید./
موفق باشید.