Android 以编程方式从电子邮件客户端发送电子邮件后未收到回拨

Android 以编程方式从电子邮件客户端发送电子邮件后未收到回拨,android,email,Android,Email,我正在尝试使用安卓设备中安装的gmail客户端发送电子邮件。但不幸的是,在安卓系统中使用电子邮件客户端编程发送电子邮件后,我无法获得成功或失败的回调 请检查以下代码: (一) (二) (三) public void shareToGMail(字符串[]电子邮件、字符串主题、字符串内容){ 意向emailIntent=新意向(Intent.ACTION\u SEND); emailIntent.putExtra(Intent.EXTRA_EMAIL,新字符串[]{storeuserdatabase

我正在尝试使用安卓设备中安装的gmail客户端发送电子邮件。但不幸的是,在安卓系统中使用电子邮件客户端编程发送电子邮件后,我无法获得成功或失败的回调

请检查以下代码:

(一)

(二)

(三)

public void shareToGMail(字符串[]电子邮件、字符串主题、字符串内容){
意向emailIntent=新意向(Intent.ACTION\u SEND);
emailIntent.putExtra(Intent.EXTRA_EMAIL,新字符串[]{storeuserdatabase.getCcEmailType(context)});
emailIntent.putExtra(Intent.EXTRA_SUBJECT,SUBJECT);
emailIntent.setType(“文本/普通”);
emailIntent.putExtra(Intent.EXTRA_文本、内容);
最终PackageManager pm=getActivity().getPackageManager();
最终列表匹配=pm.querytentActivities(emailIntent,0);
ResolveInfo-best=null;
对于(最终解决方案信息:匹配项)
if(info.activityInfo.packageName.endsWith(“.gm”)| | info.activityInfo.name.toLowerCase()包含(“gmail”))
最佳=信息;
如果(最佳!=null)
emailIntent.setClassName(best.activityInfo.packageName,best.activityInfo.name);
试一试{
startActivityForResult(emailIntent,111);
}捕获(android.content.ActivityNotFoundException ex){
appController.showCustomToastWithMessage(“没有安装电子邮件客户端。”,Constants.SNACKBAR\u CANCEL\u BUTTON\u NAME,Constants.SNACKBAR\u success\u discover\u TIME);
}
}

对于使用Intent on Gmail发送的电子邮件,没有回调。为此,您必须使用Gmail API

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);
        }
    }
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), "");
        }
    }
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);
        }
    }