Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用摄像头拍摄图像,并将图像作为附件发送到电子邮件:Android Studio_Android_Android Studio - Fatal编程技术网

使用摄像头拍摄图像,并将图像作为附件发送到电子邮件:Android Studio

使用摄像头拍摄图像,并将图像作为附件发送到电子邮件:Android Studio,android,android-studio,Android,Android Studio,我想使用相机拍摄图像,并将其作为电子邮件附件发送 我在互联网上尝试了一切,但没有任何东西对我有效。如果有人能帮忙写代码,请 公共类MainActivity扩展了AppCompatActivity{ 静态最终整数请求\图像\捕获=1 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.act

我想使用相机拍摄图像,并将其作为电子邮件附件发送

我在互联网上尝试了一切,但没有任何东西对我有效。如果有人能帮忙写代码,请

公共类MainActivity扩展了AppCompatActivity{ 静态最终整数请求\图像\捕获=1

@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);
                }
            }