使用摄像头拍摄图像,并将图像作为附件发送到电子邮件:Android Studio
我想使用相机拍摄图像,并将其作为电子邮件附件发送 我在互联网上尝试了一切,但没有任何东西对我有效。如果有人能帮忙写代码,请 公共类MainActivity扩展了AppCompatActivity{ 静态最终整数请求\图像\捕获=1使用摄像头拍摄图像,并将图像作为附件发送到电子邮件:Android Studio,android,android-studio,Android,Android Studio,我想使用相机拍摄图像,并将其作为电子邮件附件发送 我在互联网上尝试了一切,但没有任何东西对我有效。如果有人能帮忙写代码,请 公共类MainActivity扩展了AppCompatActivity{ 静态最终整数请求\图像\捕获=1 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Intent intent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent, REQUEST_IMAGE_CAPTURE);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == REQUEST_IMAGE_CAPTURE) {
if (resultCode == RESULT_OK) {
Bitmap thumbnail = (Bitmap) data.getExtras().get("data");
File file = savebitmap(thumbnail);
sendMail(file);
}
} else if (resultCode == RESULT_CANCELED) {
Toast.makeText(this, "Cancelled", Toast.LENGTH_LONG).show();
}
}
private File savebitmap(Bitmap bmp) {
String extStorageDirectory = Environment.getExternalStorageDirectory().toString();
OutputStream outStream = null;
File file = new File(extStorageDirectory, "abcd" + ".jpg");
if (file.exists()) {
file.delete();
file = new File(extStorageDirectory, "abcd" + ".jpg");
}
try {
outStream = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return file;
}
void sendMail(File mFile){
Uri uri = null;
uri = Uri.fromFile(mFile);
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {"abc@gmail.com"});
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "subject");
intent.putExtra(android.content.Intent.EXTRA_TEXT, "body");
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Share!"));
}
}保存位图:
{
.....
File file = savebitmap(thumbnail);
sendMail(file);
}
private File savebitmap(Bitmap bmp) {
String extStorageDirectory = Environment.getExternalFilesDir().toString();
OutputStream outStream = null;
File file = new File(extStorageDirectory, temp + ".jpg");
if (file.exists()) {
file.delete();
file = new File(extStorageDirectory, temp + ".jpg");
}
try {
outStream = new FileOutputStream(file);
bmp.compress(Bitmap.CompressFormat.JPEG, 100, outStream);
outStream.flush();
outStream.close();
} catch (Exception e) {
e.printStackTrace();
return null;
}
return file;
}
//然后
void sendMail(File mFile){
Uri uri = null;
uri = Uri.fromFile(mFile);
Intent intent = new Intent(android.content.Intent.ACTION_SEND);
intent.setType("image/jpeg");
intent.putExtra(android.content.Intent.EXTRA_EMAIL, new String[] {""});
intent.putExtra(android.content.Intent.EXTRA_SUBJECT, EMAIL_SUBJECT);
intent.putExtra(android.content.Intent.EXTRA_TEXT, EMAIL_BODY);
intent.putExtra(Intent.EXTRA_STREAM, uri);
startActivity(Intent.createChooser(intent, "Share!"));
}
这里有一个来自互联网的例子 我想你可能不会像上面的链接那样处理权限 当您在6.0以上版本中运行应用程序时,如棉花糖设备,则需要权限,否则无需权限。那时候你的代码可以工作了 如果运行棉花糖设备的时候需要许可,那么就做下面的代码
private void alertDialog(){
CharSequence menu[] = new CharSequence[]{"Take From Galery", "Open Camera"};
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("Pick a Picture");
builder.setItems(menu, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
if(i == 0){
Toast.makeText(getApplicationContext(), "galery", Toast.LENGTH_SHORT).show();
}else{
Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
startActivity(intent);
}
}
});
builder.show();
}
然后上面的方法放入权限代码,如下所示
if (ContextCompat.checkSelfPermission(webView.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(webView.this, Manifest.permission.CAMERA)) {
alertDialog();
}
else{
ActivityCompat.requestPermissions(webView.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
}
将两个权限添加到清单文件中
<uses-permission android:name="android.permission.CAMERA"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
把你的代码贴在你的问题上,我已经贴在了RahulKhurana@RahulKhurana上了,先生,我想把相机拍摄的图像作为附件发送到电子邮件中。我的应用程序是crashingI之前尝试过这段代码:而不是我放的文件名(“文件:/”+“abc”)。abc是一个jpg文件sdcard@SukhchainKharoud您需要获得文件的绝对路径,而不仅仅是“abc”,我已经发布了我的代码,先生,并且可以直接将位图发送到电子邮件附件?文件file=新文件(extStorageDirectory,temp+“.jpg”);先生,什么是临时工?温度显示错误@YashKrishanVermaEnvironment.getExternalStorageDirectory().toString();我的android studio正在显示getExternalStorageDirectory(删除一行将其剪切并显示:getExternalStorageDirectory()已弃用较少…(Ctrl+F1)检查信息:指定检查范围内使用弃用代码的报告。
if (ContextCompat.checkSelfPermission(webView.this, Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) {
if (ActivityCompat.shouldShowRequestPermissionRationale(webView.this, Manifest.permission.CAMERA)) {
alertDialog();
}
else{
ActivityCompat.requestPermissions(webView.this, new String[] { Manifest.permission.CAMERA, Manifest.permission.WRITE_EXTERNAL_STORAGE }, 0);
}
}