Advertisement
Guest User

Untitled

a guest
Jul 1st, 2016
119
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 16.33 KB | None | 0 0
  1. public class Sad extends AppCompatActivity {
  2.  
  3. Button button2;
  4. Button button3;
  5. final Context context = this;
  6.  
  7.  
  8. @Override
  9. public void onCreate(Bundle savedInstanceState) {
  10. super.onCreate(savedInstanceState);
  11. setContentView(R.layout.activity_sad);
  12. }
  13. public void onClick (View v) {
  14.  
  15. switch (v.getId()) {
  16. case R.id.button2:
  17. Intent h = new Intent(Intent.ACTION_SEND);
  18. h.setType("message/rfc822");
  19. h.putExtra(Intent.EXTRA_EMAIL , new String[]{"email"});
  20. h.putExtra(Intent.EXTRA_SUBJECT, "Something bothers me");
  21. h.putExtra(Intent.EXTRA_TEXT , "body of email");
  22. try {
  23. startActivity(Intent.createChooser(h, "Send mail..."));
  24. } catch (android.content.ActivityNotFoundException ex) {
  25. Toast.makeText(Sad.this, "There are no email clients installed.", Toast.LENGTH_SHORT).show();
  26. }
  27. break;
  28. case R.id.button3:
  29.  
  30. BackgroundMail bm = new BackgroundMail(context);
  31. bm.setGmailUserName("****@gmail.com");
  32. bm.setGmailPassword ("Password");
  33. bm.setMailTo("******@gmail.com");
  34. bm.setFormSubject("this is the subject");
  35. bm.setFormBody("this is the body");
  36. bm.send();
  37. }
  38. ;
  39. }}
  40.  
  41. public class BackgroundMail {
  42. String TAG = "BackgroundMail";
  43. private String username;
  44. private String password;
  45. private String mailto;
  46. private String subject;
  47. private String body;
  48. private String sendingMessage;
  49. private String sendingMessageSuccess;
  50. private String sendingMessageError;
  51. private boolean processVisibility = true;
  52. private ArrayList<String> attachments = new ArrayList<>();
  53. private Context mContext;
  54. private OnSuccessCallback onSuccessCallback;
  55. private OnFailCallback onFailCallback;
  56.  
  57. public interface OnSuccessCallback {
  58. void onSuccess();
  59. }
  60.  
  61. public interface OnFailCallback {
  62. void onFail();
  63. }
  64.  
  65. public BackgroundMail(Fragment fragment) {
  66. this(fragment.getActivity().getApplicationContext());
  67. }
  68.  
  69. public BackgroundMail(Context context) {
  70. this.mContext = context;
  71. this.sendingMessage = context.getString(R.string.msg_sending_email);
  72. this.sendingMessageSuccess = context.getString(R.string.msg_email_sent_successfully);
  73. this.sendingMessageError=context.getString(R.string.msg_error_sending_email);
  74. }
  75.  
  76. private BackgroundMail(Builder builder) {
  77. mContext = builder.context;
  78. attachments = builder.attachments;
  79. username = builder.username;
  80. password = builder.password;
  81. mailto = builder.mailto;
  82. subject = builder.subject;
  83. body = builder.body;
  84. setSendingMessage(builder.sendingMessage);
  85. setSendingMessageSuccess(builder.sendingMessageSuccess);
  86. setSendingMessageError(builder.sendingMessageError);
  87. processVisibility = builder.processVisibility;
  88. setOnSuccessCallback(builder.onSuccessCallback);
  89. setOnFailCallback(builder.onFailCallback);
  90. }
  91.  
  92. public static Builder newBuilder(Context context) {
  93. return new Builder(context);
  94. }
  95.  
  96. public static Builder newBuilder(Fragment fragment) {
  97. return new Builder(fragment.getActivity().getApplicationContext());
  98. }
  99.  
  100. public void setGmailUserName(@NonNull String string) {
  101. this.username = string;
  102. }
  103.  
  104. public void setGmailUserName(@StringRes int strRes) {
  105. this.username = mContext.getResources().getString(strRes);
  106. }
  107.  
  108. @NonNull
  109. public String getGmailUserName() {
  110. return username;
  111. }
  112.  
  113. public void setGmailPassword(@NonNull String string) {
  114. this.password = string;
  115. }
  116.  
  117. public void setGmailPassword(@StringRes int strRes) {
  118. this.password = mContext.getResources().getString(strRes);
  119. }
  120.  
  121. @NonNull
  122. public String getGmailPassword() {
  123. return password;
  124. }
  125.  
  126. public void showVisibleProgress(boolean state) {
  127. this.processVisibility = state;
  128. }
  129.  
  130. public boolean isProgressVisible() {
  131. return processVisibility;
  132. }
  133.  
  134. public void setMailTo(@NonNull String string) {
  135. this.mailto = string;
  136. }
  137.  
  138. public void setMailTo(@StringRes int strRes) {
  139. this.mailto = mContext.getResources().getString(strRes);
  140. }
  141.  
  142. @NonNull
  143. public String getMailTo() {
  144. return mailto;
  145. }
  146.  
  147. public void setFormSubject(@NonNull String string) {
  148. this.subject = string;
  149. }
  150.  
  151. public void setFormSubject(@StringRes int strRes) {
  152. this.subject = mContext.getResources().getString(strRes);
  153. }
  154.  
  155. @NonNull
  156. public String getFormSubject() {
  157. return subject;
  158. }
  159.  
  160. public void setFormBody(@NonNull String string) {
  161. this.body = string;
  162. }
  163.  
  164. public void setFormBody(@StringRes int strRes) {
  165. this.body = mContext.getResources().getString(strRes);
  166. }
  167.  
  168. @NonNull
  169. public String getFormBody() {
  170. return body;
  171. }
  172.  
  173. public void setSendingMessage(@NonNull String string) {
  174. this.sendingMessage = string;
  175. }
  176.  
  177. public void setSendingMessage(@StringRes int strRes) {
  178. this.sendingMessage = mContext.getResources().getString(strRes);
  179. }
  180.  
  181. @NonNull
  182. public String getSendingMessage() {
  183. return sendingMessage;
  184. }
  185.  
  186. public void setSendingMessageSuccess(@Nullable String string) {
  187. this.sendingMessageSuccess = string;
  188. }
  189.  
  190. public void setSendingMessageSuccess(@StringRes int strRes) {
  191. this.sendingMessageSuccess = mContext.getResources().getString(strRes);
  192. }
  193.  
  194. @Nullable
  195. public String getSendingMessageSuccess() {
  196. return sendingMessageSuccess;
  197. }
  198.  
  199. public void setSendingMessageError(@Nullable String string) {
  200. this.sendingMessageError = string;
  201. }
  202.  
  203. public void setSendingMessageError(@StringRes int strRes) {
  204. this.sendingMessageError = mContext.getResources().getString(strRes);
  205. }
  206.  
  207. @Nullable
  208. public String getSeningMessageError() {
  209. return sendingMessageError;
  210. }
  211.  
  212. public void addAttachment(@NonNull String attachment) {
  213. this.attachments.add(attachment);
  214. }
  215.  
  216. public void addAttachment(@StringRes int strRes) {
  217. this.attachments.add(mContext.getResources().getString(strRes));
  218. }
  219.  
  220. public void addAttachments(@NonNull List<String> attachments) {
  221. this.attachments.addAll(attachments);
  222. }
  223.  
  224. public void addAttachments(String...attachments) {
  225. this.attachments.addAll(Arrays.asList(attachments));
  226. }
  227.  
  228. @NonNull
  229. public List<String> getAttachments() {
  230. return attachments;
  231. }
  232.  
  233. public void setOnSuccessCallback(OnSuccessCallback onSuccessCallback) {
  234. this.onSuccessCallback = onSuccessCallback;
  235. }
  236.  
  237. public void setOnFailCallback(OnFailCallback onFailCallback) {
  238. this.onFailCallback = onFailCallback;
  239. }
  240.  
  241.  
  242. public void send() {
  243.  
  244. if (TextUtils.isEmpty(username)) {
  245. throw new IllegalArgumentException("You didn't set a Gmail username");
  246. }
  247. if (TextUtils.isEmpty(password)) {
  248. throw new IllegalArgumentException("You didn't set a Gmail password");
  249. }
  250. if (TextUtils.isEmpty(mailto)) {
  251. throw new IllegalArgumentException("You didn't set a Gmail recipient");
  252. }
  253. if (TextUtils.isEmpty(body)) {
  254. throw new IllegalArgumentException("You didn't set a body");
  255. }
  256. if (TextUtils.isEmpty(subject)) {
  257. throw new IllegalArgumentException("You didn't set a subject");
  258. }
  259. if (!Utils.isNetworkAvailable(mContext)) {
  260. Log.d(TAG, "you need internet connection to send the email");
  261. }
  262. new SendEmailTask().execute();
  263. }
  264.  
  265. public class SendEmailTask extends AsyncTask<String, Void, Boolean> {
  266. private ProgressDialog progressDialog;
  267.  
  268. @Override
  269. protected void onPreExecute() {
  270. super.onPreExecute();
  271. if (processVisibility) {
  272. progressDialog = new ProgressDialog(mContext);
  273. progressDialog.setMessage(sendingMessage);
  274. progressDialog.setCancelable(false);
  275. progressDialog.show();
  276. }
  277. }
  278.  
  279. @Override
  280. protected Boolean doInBackground(String... arg0) {
  281. try {
  282. GmailSender sender = new GmailSender(username, password);
  283. if (!attachments.isEmpty()) {
  284. for (int i = 0; i < attachments.size(); i++) {
  285. if (!attachments.get(i).isEmpty()) {
  286. sender.addAttachment(attachments.get(i));
  287. }
  288. }
  289. }
  290. sender.sendMail(subject, body, username, mailto);
  291. } catch (Exception e) {
  292. e.printStackTrace();
  293. return false;
  294. }
  295. return true;
  296. }
  297.  
  298. @Override
  299. protected void onPostExecute(Boolean result) {
  300. super.onPostExecute(result);
  301. if (processVisibility) {
  302. progressDialog.dismiss();
  303. if (result) {
  304. if (!TextUtils.isEmpty(sendingMessageSuccess)) {
  305. Toast.makeText(mContext, sendingMessageSuccess, Toast.LENGTH_SHORT).show();
  306. }
  307. if (onSuccessCallback != null) {
  308. onSuccessCallback.onSuccess();
  309. }
  310. }else {
  311. if (!TextUtils.isEmpty(sendingMessageError)) {
  312. Toast.makeText(mContext, sendingMessageError, Toast.LENGTH_SHORT).show();
  313. }
  314. if (onFailCallback != null) {
  315. onFailCallback.onFail();
  316. }
  317. }
  318. }
  319. }
  320. }
  321.  
  322. public static final class Builder {
  323. private Context context;
  324. private String username;
  325. private String password;
  326. private String mailto;
  327. private String subject;
  328. private String body;
  329. private ArrayList<String> attachments = new ArrayList<>();
  330. private String sendingMessage;
  331. private String sendingMessageSuccess;
  332. private String sendingMessageError;
  333. private boolean processVisibility;
  334. private OnSuccessCallback onSuccessCallback;
  335. private OnFailCallback onFailCallback;
  336.  
  337. private Builder(Context context) {
  338. this.context = context;
  339. this.sendingMessage = context.getString(R.string.msg_sending_email);
  340. this.sendingMessageSuccess = context.getString(R.string.msg_email_sent_successfully);
  341. this.sendingMessageError=context.getString(R.string.msg_error_sending_email);
  342. }
  343.  
  344. public Builder withUsername(@NonNull String username) {
  345. this.username = username;
  346. return this;
  347. }
  348.  
  349. public Builder withUsername(@StringRes int usernameRes) {
  350. this.username = context.getResources().getString(usernameRes);
  351. return this;
  352. }
  353.  
  354. public Builder withPassword(@NonNull String password) {
  355. this.password = password;
  356. return this;
  357. }
  358.  
  359. public Builder withPassword(@StringRes int passwordRes) {
  360. this.password = context.getResources().getString(passwordRes);
  361. return this;
  362. }
  363.  
  364. public Builder withMailto(@NonNull String mailto) {
  365. this.mailto = mailto;
  366. return this;
  367. }
  368.  
  369. public Builder withMailto(@StringRes int mailtoRes) {
  370. this.mailto = context.getResources().getString(mailtoRes);
  371. return this;
  372. }
  373.  
  374. public Builder withSubject(@NonNull String subject) {
  375. this.subject = subject;
  376. return this;
  377. }
  378.  
  379. public Builder withSubject(@StringRes int subjectRes) {
  380. this.subject = context.getResources().getString(subjectRes);
  381. return this;
  382. }
  383.  
  384. public Builder withBody(@NonNull String body) {
  385. this.body = body;
  386. return this;
  387. }
  388.  
  389. public Builder withBody(@StringRes int bodyRes) {
  390. this.body = context.getResources().getString(bodyRes);
  391. return this;
  392. }
  393.  
  394. public Builder withAttachments(@NonNull ArrayList<String> attachments) {
  395. this.attachments.addAll(attachments);
  396. return this;
  397. }
  398.  
  399. public Builder withAttachments(String...attachments) {
  400. this.attachments.addAll(Arrays.asList(attachments));
  401. return this;
  402. }
  403.  
  404. public Builder withAttachments(@ArrayRes int attachmentsRes) {
  405. this.attachments.addAll(Arrays.asList(context.getResources().getStringArray(attachmentsRes)));
  406. return this;
  407. }
  408.  
  409. public Builder withSendingMessage(@NonNull String sendingMessage) {
  410. this.sendingMessage = sendingMessage;
  411. return this;
  412. }
  413.  
  414. public Builder withSendingMessage(@StringRes int sendingMessageRes) {
  415. this.sendingMessage = context.getResources().getString(sendingMessageRes);
  416. return this;
  417. }
  418.  
  419. public Builder withSendingMessageSuccess(@Nullable String sendingMessageSuccess) {
  420. this.sendingMessageSuccess = sendingMessageSuccess;
  421. return this;
  422. }
  423.  
  424. public Builder withSendingMessageSuccess(@StringRes int sendingMessageSuccessRes) {
  425. this.sendingMessageSuccess = context.getResources().getString(sendingMessageSuccessRes);
  426. return this;
  427. }
  428.  
  429. public Builder withSendingMessageError(@Nullable String sendingMessageError) {
  430. this.sendingMessageError = sendingMessageError;
  431. return this;
  432. }
  433.  
  434. public Builder withSendingMessageError(@StringRes int sendingMessageError) {
  435. this.sendingMessageError = context.getResources().getString(sendingMessageError);
  436. return this;
  437. }
  438.  
  439. public Builder withProcessVisibility(boolean processVisibility) {
  440. this.processVisibility = processVisibility;
  441. return this;
  442. }
  443.  
  444. public Builder withOnSuccessCallback(OnSuccessCallback onSuccessCallback) {
  445. this.onSuccessCallback = onSuccessCallback;
  446. return this;
  447. }
  448.  
  449. public Builder withOnFailCallback(OnFailCallback onFailCallback) {
  450. this.onFailCallback = onFailCallback;
  451. return this;
  452. }
  453.  
  454. public BackgroundMail build() {
  455. return new BackgroundMail(this);
  456. }
  457.  
  458. public BackgroundMail send() {
  459. BackgroundMail backgroundMail = build();
  460. backgroundMail.send();
  461. return backgroundMail;
  462. }
  463. }
  464. }
  465.  
  466. <?xml version="1.0" encoding="utf-8"?>
  467. <manifest xmlns:android="http://schemas.android.com/apk/res/android"
  468.  
  469. package="queens.feedback">
  470.  
  471. <uses-permission android:name="android.permission.INTERNET"/>
  472. <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
  473. <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  474.  
  475. <application
  476. android:allowBackup="true"
  477. android:icon="@mipmap/ic_launcher"
  478. android:label="@string/app_name"
  479. android:supportsRtl="true"
  480. android:theme="@style/AppTheme">
  481. <activity android:name=".MainActivity">
  482. <intent-filter>
  483. <action android:name="android.intent.action.MAIN" />
  484.  
  485. <category android:name="android.intent.category.LAUNCHER" />
  486. </intent-filter>
  487. </activity>
  488. <activity android:name=".Happy" />
  489. <activity android:name=".Sad"></activity>
  490.  
  491. </application>
  492.  
  493. </manifest>
  494.  
  495. apply plugin: 'com.android.application'
  496.  
  497. android {
  498. compileSdkVersion 23
  499. buildToolsVersion "22.0.1"
  500.  
  501. defaultConfig {
  502. applicationId "queens.feedback"
  503. minSdkVersion 15
  504. targetSdkVersion 23
  505. versionCode 7
  506. versionName "1.7"
  507. }
  508. buildTypes {
  509. release {
  510. minifyEnabled false
  511. proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
  512. }
  513. }
  514. }
  515.  
  516. dependencies {
  517. compile fileTree(include: ['*.jar'], dir: 'libs')
  518. compile 'com.android.support:appcompat-v7:23.0.0'
  519. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement