【问题标题】:Android: Taking picture and emailing it errorAndroid:拍照并通过电子邮件发送错误
【发布时间】:2012-08-28 09:39:10
【问题描述】:

我正在尝试创建一个应用程序来拍照然后通过电子邮件发送它。最近几天我一直在搞乱我的代码,我尝试了很多不同的东西,但我仍然无法让它工作。我可以拍照没问题,只是当我发送它时我的应用程序崩溃了。请参阅下面的代码:

public class Camera extends Activity implements View.OnClickListener {

ImageButton ib;
Button b;
ImageView iv;
Intent i;
final static int cameraData = 0;
Bitmap bmp;

@Override
protected void onCreate(Bundle savedInstanceState) {
    // TODO Auto-generated method stub
    super.onCreate(savedInstanceState);
    setContentView(R.layout.photo);
    initialize();
    InputStream is = getResources().openRawResource(R.drawable.ic_launcher);
    bmp = BitmapFactory.decodeStream(is);
}

private void initialize() {
    ib = (ImageButton) findViewById(R.id.ibTakePic);
    b = (Button) findViewById(R.id.bSendPic);
    iv = (ImageView) findViewById(R.id.ivReturnedPic);
    b.setOnClickListener(this);
    ib.setOnClickListener(this);

}

@Override
public void onClick(View v) {

    // TODO Auto-generated method stub
    switch (v.getId()) {
    case R.id.bSendPic:
        String emailaddress[] = { "info@sklep.com", "", };

        Intent emailIntent = new Intent(Intent.ACTION_SEND);
        emailIntent.putExtra(Intent.EXTRA_EMAIL, emailaddress);

        // getPackageName() is your app package
        Uri path = Uri.parse("android.resource://" + getPackageName()
                + "/ + R.drawable.ic_launcher");
        emailIntent.putExtra(Intent.EXTRA_STREAM, path); // Replace your
                                                            // line
        emailIntent.setType("image/png");
        startActivity(Intent.createChooser(emailIntent, "Send Mail"));

        /*
         * emailIntent.setType("image/jpeg");
         * 
         * emailIntent.putExtra(Intent.EXTRA_STREAM, bmp);
         * 
         * emailIntent.setType("message/rfc822");
         * startActivity(Intent.createChooser(emailIntent, "Send Mail"));
         */

        break;
    case R.id.ibTakePic:
        i = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
        startActivityForResult(i, cameraData);
        break;
    }

}

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    // TODO Auto-generated method stub
    super.onActivityResult(requestCode, resultCode, data);
    if (resultCode == RESULT_OK) {

        Bundle extras = data.getExtras();
        bmp = (Bitmap) extras.get("data");
        bmp = BitmapFactory.decodeResource(getResources(),
                R.drawable.ic_launcher);

    }
}

}

当我发送它时,我收到以下错误:

android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.SEND (has extras)

有人可以帮我解决这个问题吗?谢谢

【问题讨论】:

  • 您似乎没有任何支持电子邮件发送操作的默认应用程序。你检查过你的手机有没有这样的应用程序?
  • 是的,我已经设计了一个仅用于发送普通电子邮件的应用程序,但是当我尝试添加图片时它不起作用
  • 你没有拍照。我认为问题是附件。你能试试这个来初始化位图吗:bmb = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher);
  • 我试过了,当我选择gmail发送电子邮件时它仍然崩溃!

标签: android android-intent


【解决方案1】:

试试这个

startActivityForResult(((Intent.createChooser(emailIntent, "Send mail..."))), 0);

【讨论】:

  • 我刚试过,当我点击发送邮件时,会弹出一个对话框,说没有应用程序可以执行此操作??
【解决方案2】:

添加 emailIntent.setType("message/rfc822");在使用startActivity(emailIntent); 之前。 并使用它 意图 emailIntent = new Intent(android.content.Intent.ACTION_SEND);

【讨论】:

  • 我试过了,但我仍然收到应用程序 Gmail(进程 com.google.adnroid.gm)意外停止。请重试
  • 那么您似乎没有配置任何电子邮件应用程序,例如电子邮件或其他任何东西。首先确保您已配置任何邮件帐户。
  • 我已经配置了我的电子邮件帐户。我刚刚从我的手机那里发送了一封测试电子邮件,它运行良好
【解决方案3】:

您似乎没有合适的应用来处理这种意图。 尝试创建选择器,这将打开一个与可以处理此类意图的应用程序的对话框。

尝试添加下一行:

使用下一个链接:getPackageName

//getPackageName() is your app package
    Uri path = Uri.parse("android.resource://"+ getPackageName() +"/ + R.drawable.ic_launcher");    
    emailIntent.putExtra(Intent.EXTRA_STREAM, path ); //Replace your line
            emailIntent.setType("image/png");
            startActivity(Intent.createChooser(emailIntent, "Send Mail"));

【讨论】:

  • 我试过了,然后这给了我选择 gmail 的选项,但是一旦我选择它就会崩溃!
  • 应用程序 Gmail(进程 com.google.adnroid.gm)意外停止。请重试
  • 我只是在那里尝试过,但它仍然崩溃。拍照并用android发送真的有那么棘手吗?我是不是走错路了?
  • 我认为问题在于您尝试发送可绘制文件夹中的图像。尝试将图像保存在设备的内部存储器中,然后发送。请注意,您仍然需要使用 Content Provider 将该图片从您的应用程序带到电子邮件应用程序。
  • 试过了,还是一样的错误。我已经用你的代码更新了我上面的代码。您的意思是在 emailIntent.putExtra 的末尾放置 uri 而不是 path 吗?
猜你喜欢
  • 2015-11-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-07-15
  • 2012-07-20
  • 1970-01-01
  • 1970-01-01
  • 2023-03-18
相关资源
最近更新 更多