Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class Sad extends AppCompatActivity {
- Button button2;
- Button button3;
- final Context context = this;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_sad);
- }
- public void onClick (View v) {
- switch (v.getId()) {
- case R.id.button2:
- Intent h = new Intent(Intent.ACTION_SEND);
- h.setType("message/rfc822");
- h.putExtra(Intent.EXTRA_EMAIL , new String[]{"email"});
- h.putExtra(Intent.EXTRA_SUBJECT, "Something bothers me");
- h.putExtra(Intent.EXTRA_TEXT , "body of email");
- try {
- startActivity(Intent.createChooser(h, "Send mail..."));
- } catch (android.content.ActivityNotFoundException ex) {
- Toast.makeText(Sad.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
- }
- break;
- case R.id.button3:
- BackgroundMail.newBuilder(this)
- .withUsername("*****@gmail.com")
- .withPassword("p/w")
- .withMailto("*********")
- .withSubject("Something bothers me")
- .withBody("this is the body")
- .withOnSuccessCallback(new BackgroundMail.OnSuccessCallback() {
- @Override
- public void onSuccess() {
- //do some magic
- }
- })
- .withOnFailCallback(new BackgroundMail.OnFailCallback() {
- @Override
- public void onFail() {
- //do some magic
- }
- })
- .send();
- }
- ;
- }}
- public class BackgroundMail {
- String TAG = "BackgroundMail";
- private String username;
- private String password;
- private String mailto;
- private String subject;
- private String body;
- private String sendingMessage;
- private String sendingMessageSuccess;
- private String sendingMessageError;
- private boolean processVisibility = true;
- private ArrayList<String> attachments = new ArrayList<>();
- private Context mContext;
- private OnSuccessCallback onSuccessCallback;
- private OnFailCallback onFailCallback;
- public interface OnSuccessCallback {
- void onSuccess();
- }
- public interface OnFailCallback {
- void onFail();
- }
- public BackgroundMail(Fragment fragment) {
- this(fragment.getActivity().getApplicationContext());
- }
- public BackgroundMail(Context context) {
- this.mContext = context;
- this.sendingMessage = context.getString(R.string.msg_sending_email);
- this.sendingMessageSuccess = context.getString(R.string.msg_email_sent_successfully);
- this.sendingMessageError=context.getString(R.string.msg_error_sending_email);
- }
- private BackgroundMail(Builder builder) {
- mContext = builder.context;
- attachments = builder.attachments;
- username = builder.username;
- password = builder.password;
- mailto = builder.mailto;
- subject = builder.subject;
- body = builder.body;
- setSendingMessage(builder.sendingMessage);
- setSendingMessageSuccess(builder.sendingMessageSuccess);
- setSendingMessageError(builder.sendingMessageError);
- processVisibility = builder.processVisibility;
- setOnSuccessCallback(builder.onSuccessCallback);
- setOnFailCallback(builder.onFailCallback);
- }
- public static Builder newBuilder(Context context) {
- return new Builder(context);
- }
- public static Builder newBuilder(Fragment fragment) {
- return new Builder(fragment.getActivity().getApplicationContext());
- }
- public void setGmailUserName(@NonNull String string) {
- this.username = string;
- }
- public void setGmailUserName(@StringRes int strRes) {
- this.username = mContext.getResources().getString(strRes);
- }
- @NonNull
- public String getGmailUserName() {
- return username;
- }
- public void setGmailPassword(@NonNull String string) {
- this.password = string;
- }
- public void setGmailPassword(@StringRes int strRes) {
- this.password = mContext.getResources().getString(strRes);
- }
- @NonNull
- public String getGmailPassword() {
- return password;
- }
- public void showVisibleProgress(boolean state) {
- this.processVisibility = state;
- }
- public boolean isProgressVisible() {
- return processVisibility;
- }
- public void setMailTo(@NonNull String string) {
- this.mailto = string;
- }
- public void setMailTo(@StringRes int strRes) {
- this.mailto = mContext.getResources().getString(strRes);
- }
- @NonNull
- public String getMailTo() {
- return mailto;
- }
- public void setFormSubject(@NonNull String string) {
- this.subject = string;
- }
- public void setFormSubject(@StringRes int strRes) {
- this.subject = mContext.getResources().getString(strRes);
- }
- @NonNull
- public String getFormSubject() {
- return subject;
- }
- public void setFormBody(@NonNull String string) {
- this.body = string;
- }
- public void setFormBody(@StringRes int strRes) {
- this.body = mContext.getResources().getString(strRes);
- }
- @NonNull
- public String getFormBody() {
- return body;
- }
- public void setSendingMessage(@NonNull String string) {
- this.sendingMessage = string;
- }
- public void setSendingMessage(@StringRes int strRes) {
- this.sendingMessage = mContext.getResources().getString(strRes);
- }
- @NonNull
- public String getSendingMessage() {
- return sendingMessage;
- }
- public void setSendingMessageSuccess(@Nullable String string) {
- this.sendingMessageSuccess = string;
- }
- public void setSendingMessageSuccess(@StringRes int strRes) {
- this.sendingMessageSuccess = mContext.getResources().getString(strRes);
- }
- @Nullable
- public String getSendingMessageSuccess() {
- return sendingMessageSuccess;
- }
- public void setSendingMessageError(@Nullable String string) {
- this.sendingMessageError = string;
- }
- public void setSendingMessageError(@StringRes int strRes) {
- this.sendingMessageError = mContext.getResources().getString(strRes);
- }
- @Nullable
- public String getSendingMessageError() {
- return sendingMessageError;
- }
- public void setOnSuccessCallback(OnSuccessCallback onSuccessCallback) {
- this.onSuccessCallback = onSuccessCallback;
- }
- public void setOnFailCallback(OnFailCallback onFailCallback) {
- this.onFailCallback = onFailCallback;
- }
- public void send() {
- new SendEmailTask().execute();
- }
- public class SendEmailTask extends AsyncTask<String, Void, Boolean> {
- private ProgressDialog progressDialog;
- @Override
- protected void onPreExecute() {
- super.onPreExecute();
- if (processVisibility) {
- progressDialog = new ProgressDialog(mContext);
- progressDialog.setMessage(sendingMessage);
- progressDialog.setCancelable(false);
- progressDialog.show();
- }
- }
- @Override
- protected Boolean doInBackground(String... arg0) {
- try {
- GmailSender sender = new GmailSender(username, password);
- if (!attachments.isEmpty()) {
- for (int i = 0; i < attachments.size(); i++) {
- if (!attachments.get(i).isEmpty()) {
- sender.addAttachment(attachments.get(i));
- }
- }
- }
- sender.sendMail(subject, body, username, mailto);
- } catch (Exception e) {
- e.printStackTrace();
- return false;
- }
- return true;
- }
- @Override
- protected void onPostExecute(Boolean result) {
- super.onPostExecute(result);
- if (processVisibility) {
- progressDialog.dismiss();
- if (result) {
- if (!TextUtils.isEmpty(sendingMessageSuccess)) {
- Toast.makeText(mContext, sendingMessageSuccess, Toast.LENGTH_SHORT).show();
- }
- if (onSuccessCallback != null) {
- onSuccessCallback.onSuccess();
- }
- }else {
- if (!TextUtils.isEmpty(sendingMessageError)) {
- Toast.makeText(mContext, sendingMessageError, Toast.LENGTH_SHORT).show();
- }
- if (onFailCallback != null) {
- onFailCallback.onFail();
- }
- }
- }
- }
- }
- public static final class Builder {
- private Context context;
- private String username;
- private String password;
- private String mailto;
- private String subject;
- private String body;
- private ArrayList<String> attachments = new ArrayList<>();
- private String sendingMessage;
- private String sendingMessageSuccess;
- private String sendingMessageError;
- private boolean processVisibility;
- private OnSuccessCallback onSuccessCallback;
- private OnFailCallback onFailCallback;
- private Builder(Context context) {
- this.context = context;
- this.sendingMessage = context.getString(R.string.msg_sending_email);
- this.sendingMessageSuccess = context.getString(R.string.msg_email_sent_successfully);
- this.sendingMessageError=context.getString(R.string.msg_error_sending_email);
- }
- public Builder withUsername(@NonNull String username) {
- this.username = username;
- return this;
- }
- public Builder withUsername(@StringRes int usernameRes) {
- this.username = context.getResources().getString(usernameRes);
- return this;
- }
- public Builder withPassword(@NonNull String password) {
- this.password = password;
- return this;
- }
- public Builder withPassword(@StringRes int passwordRes) {
- this.password = context.getResources().getString(passwordRes);
- return this;
- }
- public Builder withMailto(@NonNull String mailto) {
- this.mailto = mailto;
- return this;
- }
- public Builder withMailto(@StringRes int mailtoRes) {
- this.mailto = context.getResources().getString(mailtoRes);
- return this;
- }
- public Builder withSubject(@NonNull String subject) {
- this.subject = subject;
- return this;
- }
- public Builder withSubject(@StringRes int subjectRes) {
- this.subject = context.getResources().getString(subjectRes);
- return this;
- }
- public Builder withBody(@NonNull String body) {
- this.body = body;
- return this;
- }
- public Builder withBody(@StringRes int bodyRes) {
- this.body = context.getResources().getString(bodyRes);
- return this;
- }
- public Builder withAttachments(@NonNull ArrayList<String> attachments) {
- this.attachments.addAll(attachments);
- return this;
- }
- public Builder withAttachments(String...attachments) {
- this.attachments.addAll(Arrays.asList(attachments));
- return this;
- }
- public Builder withAttachments(@ArrayRes int attachmentsRes) {
- this.attachments.addAll(Arrays.asList(context.getResources().getStringArray(attachmentsRes)));
- return this;
- }
- public Builder withSendingMessage(@NonNull String sendingMessage) {
- this.sendingMessage = sendingMessage;
- return this;
- }
- public Builder withSendingMessage(@StringRes int sendingMessageRes) {
- this.sendingMessage = context.getResources().getString(sendingMessageRes);
- return this;
- }
- public Builder withSendingMessageSuccess(@Nullable String sendingMessageSuccess) {
- this.sendingMessageSuccess = sendingMessageSuccess;
- return this;
- }
- public Builder withSendingMessageSuccess(@StringRes int sendingMessageSuccessRes) {
- this.sendingMessageSuccess = context.getResources().getString(sendingMessageSuccessRes);
- return this;
- }
- public Builder withSendingMessageError(@Nullable String sendingMessageError) {
- this.sendingMessageError = sendingMessageError;
- return this;
- }
- public Builder withSendingMessageError(@StringRes int sendingMessageError) {
- this.sendingMessageError = context.getResources().getString(sendingMessageError);
- return this;
- }
- public Builder withProcessVisibility(boolean processVisibility) {
- this.processVisibility = processVisibility;
- return this;
- }
- public Builder withOnSuccessCallback(OnSuccessCallback onSuccessCallback) {
- this.onSuccessCallback = onSuccessCallback;
- return this;
- }
- public Builder withOnFailCallback(OnFailCallback onFailCallback) {
- this.onFailCallback = onFailCallback;
- return this;
- }
- public BackgroundMail build() {
- return new BackgroundMail(this);
- }
- public BackgroundMail send() {
- BackgroundMail backgroundMail = build();
- backgroundMail.send();
- return backgroundMail;
- }
- }
- }
- <?xml version="1.0" encoding="utf-8"?>
- <manifest xmlns:android="http://schemas.android.com/apk/res/android"
- package="queens.feedback">
- <uses-permission android:name="android.permission.INTERNET"/>
- <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
- <application
- android:allowBackup="true"
- android:icon="@mipmap/ic_launcher"
- android:label="@string/app_name"
- android:supportsRtl="true"
- android:theme="@style/AppTheme">
- <activity android:name=".MainActivity">
- <intent-filter>
- <action android:name="android.intent.action.MAIN" />
- <category android:name="android.intent.category.LAUNCHER" />
- </intent-filter>
- </activity>
- <activity android:name=".Happy" />
- <activity android:name=".Sad"></activity>
- </application>
- </manifest>
- apply plugin: 'com.android.application'
- android {
- compileSdkVersion 23
- buildToolsVersion "22.0.1"
- defaultConfig {
- applicationId "queens.feedback"
- minSdkVersion 15
- targetSdkVersion 23
- versionCode 7
- versionName "1.7"
- }
- buildTypes {
- release {
- minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
- }
- }
- }
- dependencies {
- compile fileTree(include: ['*.jar'], dir: 'libs')
- compile 'com.android.support:appcompat-v7:23.0.0'
- }
- 07-05 02:56:33.782 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:169)
- 07-05 02:56:33.782 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:118)
- 07-05 02:56:33.782 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Transport.send0(Transport.java:188)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Transport.send(Transport.java:118)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.GmailSender.sendMail(GmailSender.java:84)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.BackgroundMail$SendEmailTask.doInBackground(BackgroundMail.java:233)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.BackgroundMail$SendEmailTask.doInBackground(BackgroundMail.java:208)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:295)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
- 07-05 02:56:33.783 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
- 07-05 02:56:33.841 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
- 07-05 02:56:33.841 2189-2480/queens.feedback W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
- 07-05 02:56:33.956 2189-2196/queens.feedback W/art﹕ Suspending all threads took: 14.286ms
- 07-05 02:56:34.040 2189-2203/queens.feedback W/EGL_emulation﹕ eglSurfaceAttrib not implemented
- 07-05 02:56:34.040 2189-2203/queens.feedback W/OpenGLRenderer﹕ Failed to set EGL_SWAP_BEHAVIOR on surface 0xac335600, error=EGL_SUCCESS
- 07-05 02:56:34.141 2189-2203/queens.feedback E/Surface﹕ getSlotFromBufferLocked: unknown buffer: 0xaa392020
- 07-05 02:56:34.681 2189-2480/queens.feedback W/System.err﹕ javax.mail.AuthenticationFailedException
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:319)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:169)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:118)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Transport.send0(Transport.java:188)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Transport.send(Transport.java:118)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.GmailSender.sendMail(GmailSender.java:84)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.BackgroundMail$SendEmailTask.doInBackground(BackgroundMail.java:233)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.BackgroundMail$SendEmailTask.doInBackground(BackgroundMail.java:208)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:295)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
- 07-05 02:56:34.682 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
- 07-05 02:56:34.683 2189-2480/queens.feedback W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
- 07-05 02:56:35.251 1304-1335/system_process I/InputReader﹕ Reconfiguring input devices. changes=0x00000010
- 07-05 02:56:35.474 2544-2544/? W/dex2oat﹕ Unexpected CPU variant for X86 using defaults: x86
- 07-05 02:56:35.475 2544-2544/? W/dex2oat﹕ Mismatch between dex2oat instruction set features (ISA: X86 Feature string: smp,-ssse3,-sse4.1,-sse4.2,-avx,-avx2) and those of dex2oat executable (ISA: X86 Feature string: smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2) for the command line:
- 07-05 02:56:35.475 2544-2544/? W/dex2oat﹕ /system/bin/dex2oat --runtime-arg -classpath --runtime-arg --compiler-filter=interpret-only --instruction-set=x86 --instruction-set-features=smp,ssse3,-sse4.1,-sse4.2,-avx,-avx2 --runtime-arg -Xrelocate --boot-image=/system/framework/boot.art --runtime-arg -Xms64m --runtime-arg -Xmx512m --instruction-set-variant=x86 --instruction-set-features=default --dex-file=/data/user/0/com.google.android.gms/app_fb/f.apk --oat-file=/data/user/0/com.google.android.gms/app_fb/f.dex
- 07-05 02:56:35.475 2544-2544/? I/dex2oat﹕ /system/bin/dex2oat --compiler-filter=interpret-only --dex-file=/data/user/0/com.google.android.gms/app_fb/f.apk --oat-file=/data/user/0/com.google.android.gms/app_fb/f.dex
- 07-05 02:56:35.539 2189-2480/queens.feedback W/System.err﹕ javax.mail.AuthenticationFailedException
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:319)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:169)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Service.connect(Service.java:118)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Transport.send0(Transport.java:188)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at javax.mail.Transport.send(Transport.java:118)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.GmailSender.sendMail(GmailSender.java:84)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.BackgroundMail$SendEmailTask.doInBackground(BackgroundMail.java:233)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at queens.feedback.BackgroundMail$SendEmailTask.doInBackground(BackgroundMail.java:208)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at android.os.AsyncTask$2.call(AsyncTask.java:295)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.FutureTask.run(FutureTask.java:237)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:234)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
- 07-05 02:56:35.540 2189-2480/queens.feedback W/System.err﹕ at java.lang.Thread.run(Thread.java:818)
- 07-05 02:56:35.569 2544-2544/? I/dex2oat﹕ dex2oat took 94.241ms (threads: 1) arena alloc=0B java alloc=34KB native alloc=674KB free=349KB
- 07-05 02:56:35.572 2458-2471/com.google.android.gms.unstable W/System﹕ ClassLoader referenced unknown path:
- 07-05 02:56:35.589 1591-1591/com.google.android.gms.persistent V/GmsNetworkLocationProvi﹕ DISABLE
- 07-05 02:56:35.598 1591-1591/com.google.android.gms.persistent I/GCoreNlp﹕ shouldConfirmNlp, NLP off. Ensuring opt-in disabled
- 07-05 02:56:35.624 2458-2471/com.google.android.gms.unstable D/﹕ HostConnection::get() New Host Connection established 0x9c4bd7d0, tid 2471
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement