使用android共享对话框共享图像和文本

时间:2017-07-09 06:30:27

标签: android

是否可以使用Android共享对话框将图像和文本分享到facebook,Instagram和whatsapp?我试图用2个星期来做这个没有成功。我唯一能做的就是在不使用共享对话框的情况下编写一些foreach媒体代码。这是一些与whatsapp一起使用的代码,但不适用于insta和facebook

String DishImage = listDishes.get(selectedDish).getDishImage();
            Picasso.with(this).load(DishImage).into(new Target() {
                @Override
                public void onBitmapLoaded(Bitmap bm, Picasso.LoadedFrom from) {
                    OutputStream fOut = null;
                    Uri outputFileUri;
                    try {
                        File root = new File(Environment.getExternalStorageDirectory() + File.separator + "FoodMana" + File.separator);
                        root.mkdirs();
                        File sdImageMainDirectory = new File(root, "myPicName.jpg");
                        fOut = new FileOutputStream(sdImageMainDirectory);
                    } catch (Exception e) {Toast.makeText(getApplicationContext(), "Error occured. Please try again later.", Toast.LENGTH_SHORT).show();}

                    try {
                        bm.compress(Bitmap.CompressFormat.PNG, 100, fOut);
                        fOut.flush();
                        fOut.close();
                    } catch (Exception e) {
                    }


                        Intent waIntent = new Intent(android.content.Intent.ACTION_SEND);
                        waIntent.setType("image/*");
                        waIntent.putExtra(Intent.EXTRA_STREAM, Uri.parse(Environment.getExternalStorageDirectory()
                                + File.separator + "FoodMana" + File.separator + "myPicName.jpg"));
                        waIntent.putExtra(Intent.EXTRA_TEXT, "I am going to eat that dish!!!!!" + "\n" + "what do you think? check out");
                        startActivity(Intent.createChooser(waIntent, "Share with"));

                }

                @Override
                public void onBitmapFailed(Drawable errorDrawable) {
                    Log.d("TAG","error");
                }

                @Override
                public void onPrepareLoad(Drawable placeHolderDrawable) {
                    Log.d("TAG","prepared");

                }
            });

2 个答案:

答案 0 :(得分:0)

我正在使用它来分享永远的链接 我从al_details.get(getLayoutPosition()).get(URL_WEB).toString()

获取了我的链接
share.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                    Intent shareintent = new Intent(Intent.ACTION_SEND);
                    shareintent.setType("text/plain");
                    shareintent.putExtra(Intent.EXTRA_TEXT,al_details.get(getLayoutPosition()).get(URL_WEB).toString());
                    mContext.startActivity(Intent.createChooser(shareintent,"Share Via"));
                    }
                });

我从网上尝试过很多东西,但最后我做到了这一点。所以你可以尝试一次。

答案 1 :(得分:0)

好的,我找到了解决方案

String DishImage = listDishes.get(selectedDish).getDishImage();
            Picasso.with(this).load(DishImage).into(new Target() {
                @Override
                public void onBitmapLoaded(Bitmap bm, Picasso.LoadedFrom from) {
                    Intent intent = new Intent(Intent.ACTION_SEND);
                    intent.putExtra(Intent.EXTRA_TEXT, "Hey view/download this image");
                    String path = null;
                    path = MediaStore.Images.Media.insertImage(getContentResolver(), bm, "", null);
                    Uri screenshotUri = Uri.parse(path);
                    intent.putExtra(Intent.EXTRA_STREAM, screenshotUri);
                    intent.setType("image/*");
                    startActivity(Intent.createChooser(intent, "Share image via..."));
                }
                @Override
                public void onBitmapFailed(Drawable errorDrawable) {
                    Log.d("TAG","error");
                }
                @Override
                public void onPrepareLoad(Drawable placeHolderDrawable) {
                    Log.d("TAG","prepared");
                }
            });