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