【问题标题】:Android App Take/ Email PhotoAndroid 应用拍摄/电子邮件照片
【发布时间】:2011-11-22 18:39:04
【问题描述】:

我目前正在编写一个应用程序,在某个活动中,我们希望用户能够拍摄照片并将其通过电子邮件发送到所需的电子邮件地址。我可以分别做这两项(拍照和发送照片),但是当我一起运行它们时,电子邮件客户端列表出现在相机上......我似乎无法弄清楚为什么它没有运行在相机本身之后..有什么帮助吗?

***这是我现在拥有的:

public class PhotoHandler extends Activity {

private final static int TAKE_PHOTO_CODE = 1;
File downloadedPic = null;
Intent in;

@Override
public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  setContentView(R.layout.mnwv_main);

  downloadedPic = takeandReturn(this);
}

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data)
{

  try {            
      Intent picMessageIntent = new Intent(android.content.Intent.ACTION_SEND);            
      picMessageIntent.setType("image/jpeg");
      picMessageIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(downloadedPic));
        picMessageIntent.putExtra(Intent.EXTRA_EMAIL  , new String[]{});
      picMessageIntent.putExtra(Intent.EXTRA_SUBJECT, "MNWV - Check Out This Photo!");
        picMessageIntent.putExtra(Intent.EXTRA_TEXT   , "*** Please Describe the Photo Taken Below (Include Your Name, Location, etc.)... ***");
      startActivity(Intent.createChooser(picMessageIntent, "Send Picture Using: ")); 
  } catch (Exception e) {
      Log.e("TAG", "sendPictureMessage() failed to start activity.", e);
      Toast.makeText(this, "No handler", Toast.LENGTH_LONG).show();
  } 
}  

【问题讨论】:

    标签: android email camera android-intent photo


    【解决方案1】:

    您必须使用 startActivityForResult 来拍照。之后您必须使用 onActivityResult 发送电子邮件:

       @Override
       public void onActivityResult(int requestCode, int resultCode, Intent data)
       {
           // TODO: Test for requestCode and resultCode
           try {            
               Intent picMessageIntent = new Intent(android.content.Intent.ACTION_SEND);            
               picMessageIntent.setType("image/jpeg");
               picMessageIntent.putExtra(Intent.EXTRA_STREAM, Uri.fromFile(downloadedPic));
               startActivity(Intent.createChooser(picMessageIntent, "Send Picture Using: "));
           } catch (Exception e) {
               Log.e("TAG", "sendPictureMessage() failed to start activity.", e);
               Toast.makeText(this, "No handler", Toast.LENGTH_LONG).show();
           }
       }
    

    希望它会有所帮助。

    【讨论】:

    • 测试requetcode和resultcode是什么意思?我不明白。对不起,我是 android 开发新手
    • requestCode 在您必须在 Activity 中处理多个 startActivityForResult 调用时很有用:这意味着您必须检查 onActivityResult 收到的 requestCode 是否与调用 startActivityForResult 时使用的匹配。关于 resultCode,您必须检查它是否与 RESULT_CANCELED 不同。您可以在以下位置了解更多信息:developer.android.com/reference/android/app/…, int, android.content.Intent)
    • 好吧,我还有一个问题。我得到了上述工作。但现在它会拍照并发送它,但之后,你只会黑屏。目前是否有将其定向到特定活动的方法?
    • 你必须为你的Activity设置内容布局:this.setContent(R.layout.mylayout);调用 super.onCreate(savedInstanceState);
    • 我知道这会解决这个黑屏,但是有没有办法在发送电子邮件后说 startActivity?
    猜你喜欢
    • 1970-01-01
    • 2015-11-03
    • 1970-01-01
    • 2017-07-15
    • 2011-03-30
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2016-06-07
    相关资源
    最近更新 更多