【问题标题】:Sharing Image via Intent failed通过 Intent 共享图像失败
【发布时间】:2015-05-26 07:58:02
【问题描述】:

我正在尝试捕获图像,然后与应用共享。

private static final int CAMERA_REQUEST = 1888;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_result);

        Intent cameraIntent = new Intent(
               android.provider.MediaStore.ACTION_IMAGE_CAPTURE);

        startActivityForResult(cameraIntent, CAMERA_REQUEST);
        //start the camera and capture an image
}

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {

        Uri imageUri = data.getData();
        //convert captured Image from Intent form to URI

        Intent shareIntent = new Intent();
        shareIntent.setAction(Intent.ACTION_SEND);
        shareIntent.putExtra(Intent.EXTRA_STREAM, imageUri);
        shareIntent.setType("image/jpeg");
        startActivity(shareIntent);
        //share the image

    }
}

但是当我运行此代码时,图像不会被共享。我的代码有错误吗?

有没有其他方法可以共享图像而不将其保存在内存中?

【问题讨论】:

  • 很可能,在 onActivityResult data.getData() 中返回 null。你能检查一下吗?
  • 它返回空值。我该如何解决?
  • 拜托,试试这个代码:stackoverflow.com/a/22218309/1796309,如果你没有帮助,我会为你写正确的代码
  • 成功了!非常感谢!

标签: java android image android-intent android-camera


【解决方案1】:
Intent sharingIntent = new Intent(Intent.ACTION_SEND);
Uri screenshotUri = Uri.parse("android.resource://com.android.test/*");
try {
    InputStream stream = getContentResolver().openInputStream(screenshotUri);
} catch (FileNotFoundException e) {
    e.printStackTrace();
}
sharingIntent.setType("image/jpeg");
sharingIntent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
startActivity(Intent.createChooser(sharingIntent, "Share image using")); 

【讨论】:

    【解决方案2】:

    感谢Alexander 帮助我找到解决方案。

    这是工作代码 -

    private static final int CAMERA_REQUEST = 1888;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_result);
            Intent cameraIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
            startActivityForResult(cameraIntent, CAMERA_REQUEST);
    }
    
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        if (requestCode == CAMERA_REQUEST && resultCode == RESULT_OK) {
            final Intent intent = new Intent(android.content.Intent.ACTION_SEND);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
                   .putExtra(Intent.EXTRA_STREAM,
                    Uri.parse(MediaStore.Images.Media.insertImage(getContentResolver(),
                            (Bitmap) data.getExtras().get("data"), "title", null)
                   ))
                   .setType("image/jpeg");
            startActivity(intent);
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-18
      • 2019-11-19
      • 1970-01-01
      • 2013-10-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多