Я пытаюсь отправить электронное письмо с помощью gmail-клиента, установленного на моем устройстве Android. Но, к сожалению, я не могу получить успешный или неудачный ответный звонок после отправки электронной почты с помощью почтового клиента программно в Android.
Пожалуйста, проверьте код ниже:
1)
public void getPermissions() {
int hasPermission = ContextCompat.checkSelfPermission(getActivity(), Manifest.permission.GET_ACCOUNTS);
if (hasPermission == PackageManager.PERMISSION_GRANTED) {
Account[] accounts = AccountManager.get(getActivity()).getAccounts();
if(accounts.length==0){
appController.showCustomToastWithMessage(context.getResources().getString(R.string.no_email_accounts), Constants.SNACKBAR_CANCEL_BUTTON_NAME, Constants.SNACKBAR_SUCCES_DISMISS_TIME);
}else {
getEmail(accounts);
}
} else {
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.GET_ACCOUNTS}, 1);
ActivityCompat.requestPermissions(getActivity(), new String[]{Manifest.permission.ACCESS_FINE_LOCATION}, 1);
}
}
2)
public void getEmail(Account[] Accounts) {
Pattern emailPattern = Patterns.EMAIL_ADDRESS;
for (Account account : Accounts) {
if (emailPattern.matcher(account.name).matches()) {
String possibleEmail = account.name;
if (!emailaccList.contains(possibleEmail)) {
emailaccList.add(possibleEmail);
}
}
}
if (emailaccList.size() != 0) {
String emailId [] = {emailaccList.get(0)};
shareToGMail(emailId, getString(R.string.contact_us), "");
}
}
3)
public void shareToGMail(String[] email, String subject, String content) {
Intent emailIntent = new Intent(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL, new String[]{storeUserDataDatabase.getCcEmailType(context)});
emailIntent.putExtra(Intent.EXTRA_SUBJECT, subject);
emailIntent.setType("text/plain");
emailIntent.putExtra(Intent.EXTRA_TEXT, content);
final PackageManager pm = getActivity().getPackageManager();
final List<ResolveInfo> matches = pm.queryIntentActivities(emailIntent, 0);
ResolveInfo best = null;
for(final ResolveInfo info : matches)
if (info.activityInfo.packageName.endsWith(".gm") || info.activityInfo.name.toLowerCase().contains("gmail"))
best = info;
if (best != null)
emailIntent.setClassName(best.activityInfo.packageName, best.activityInfo.name);
try {
startActivityForResult(emailIntent, 111);
}catch (android.content.ActivityNotFoundException ex){
appController.showCustomToastWithMessage("There is no email clients installed.", Constants.SNACKBAR_CANCEL_BUTTON_NAME, Constants.SNACKBAR_SUCCES_DISMISS_TIME);
}
}