Android 仅通过电子邮件共享图像
我制作了一个应用程序,用户在其中打开相机并捕获图像。现在我希望通过电子邮件直接共享该图像。为此,我使用了intents。但我的问题是,当用户finsh捕获图像时,有多种选项,如whatsap、google、gmail、,hike等。我只希望用户只通过电子邮件而不是与其他应用程序共享图像 代码Android 仅通过电子邮件共享图像,android,android-intent,Android,Android Intent,我制作了一个应用程序,用户在其中打开相机并捕获图像。现在我希望通过电子邮件直接共享该图像。为此,我使用了intents。但我的问题是,当用户finsh捕获图像时,有多种选项,如whatsap、google、gmail、,hike等。我只希望用户只通过电子邮件而不是与其他应用程序共享图像 代码 我建议过滤用户可用于共享文件的选项,并将其限制为仅限于电子邮件应用程序 尝试类似的方法: Intent emailIntent = new Intent(); emailIntent.setActi
我建议过滤用户可用于共享文件的选项,并将其限制为仅限于电子邮件应用程序 尝试类似的方法:
Intent emailIntent = new Intent();
emailIntent.setAction(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_TEXT, // email body);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, // email subject);
// Add Image to email
PackageManager pm = getPackageManager();
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("image/jpg");
Intent openInChooser = Intent.createChooser(emailIntent, resources.getString(R.string.share_chooser_text));
List<ResolveInfo> resInfo = pm.queryIntentActivities(sendIntent, 0);
List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
for (int i = 0; i < resInfo.size(); i++) {
// Extract the label, append it, and repackage it in a LabeledIntent
ResolveInfo ri = resInfo.get(i);
String packageName = ri.activityInfo.packageName;
if(packageName.contains("android.email")) {
emailIntent.setPackage(packageName);
}
intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
}
}
// convert intentList to array
LabeledIntent[] extraIntents = intentList.toArray( new LabeledIntent[ intentList.size() ]);
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
startActivity(openInChooser);
Intent emailIntent=newintent();
emailIntent.setAction(Intent.ACTION\u SEND);
emailIntent.putExtra(Intent.EXTRA_TEXT,//电子邮件正文);
emailIntent.putExtra(Intent.EXTRA_SUBJECT,//email SUBJECT);
//将图像添加到电子邮件
PackageManager pm=getPackageManager();
Intent sendIntent=新的Intent(Intent.ACTION\U SEND);
setType(“image/jpg”);
Intent openInChooser=Intent.createChooser(emailIntent,resources.getString(R.string.share\u chooser\u text));
List resInfo=pm.querytentActivities(sendIntent,0);
List intentList=new ArrayList();
对于(int i=0;i
首先将图像保存在SD卡或电话商店中,然后发送电子邮件如果先生我不想保存该img,只需通过电子邮件直接共享即可。这很好,但不直接通过电子邮件发送图像。好的,您不需要将图像保存在SD卡中,然后从位图中的url下载图像,然后通过电子邮件发送位图。Gmail和hotmail呢?
Intent emailIntent = new Intent();
emailIntent.setAction(Intent.ACTION_SEND);
emailIntent.putExtra(Intent.EXTRA_TEXT, // email body);
emailIntent.putExtra(Intent.EXTRA_SUBJECT, // email subject);
// Add Image to email
PackageManager pm = getPackageManager();
Intent sendIntent = new Intent(Intent.ACTION_SEND);
sendIntent.setType("image/jpg");
Intent openInChooser = Intent.createChooser(emailIntent, resources.getString(R.string.share_chooser_text));
List<ResolveInfo> resInfo = pm.queryIntentActivities(sendIntent, 0);
List<LabeledIntent> intentList = new ArrayList<LabeledIntent>();
for (int i = 0; i < resInfo.size(); i++) {
// Extract the label, append it, and repackage it in a LabeledIntent
ResolveInfo ri = resInfo.get(i);
String packageName = ri.activityInfo.packageName;
if(packageName.contains("android.email")) {
emailIntent.setPackage(packageName);
}
intentList.add(new LabeledIntent(intent, packageName, ri.loadLabel(pm), ri.icon));
}
}
// convert intentList to array
LabeledIntent[] extraIntents = intentList.toArray( new LabeledIntent[ intentList.size() ]);
openInChooser.putExtra(Intent.EXTRA_INITIAL_INTENTS, extraIntents);
startActivity(openInChooser);