как поделиться и сохранить изображение и текст вместе с Intent.ACTION_SEND? - PullRequest
1 голос
/ 17 октября 2019

Я хочу сохранить изображение и поделиться им с текстом, и я использую

i.putExtra(Intent.EXTRA_TEXT, shareMessages);
i.putExtra(Intent.EXTRA_STREAM,path);
i.setType("image/*");
i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);

Сохранить изображение действительно работает!

, но результат: Share Failed!на устройстве и

W/Bundle: Key android.intent.extra.STREAM expected Parcelable but value was a java.lang.String.  The default value <null> was returned.

в logcat

может быть, вы можете помочь мне после просмотра полного кода ниже:

           cardTotal.setDrawingCacheEnabled(true);
            Bitmap b = cardTotal.getDrawingCache();

            int random = new Random().nextInt((100000 - 100)+ 1) + 100000;

            Long expense = getArguments().getLong("expense", 0);
            Long income = getArguments().getLong("income", 0);
            String shareMessages;

            File root = Environment.getExternalStorageDirectory();

            String path = root.toString() + "/" +textTitle.getText().toString()+random+ "mycarta.png";

            if (!income.equals(0L)){
                shareMessages = "Hey i get my income from" + textTitle.getText().toString() + "\n\n" + "Download MyCarta! Make your life easier, happier!";
            }else {
                shareMessages = "Hey i was doing " + textTitle.getText().toString() + "\n\n" + "Download MyCarta! Make your life easier, happier!";
            }

            try {
                b.compress(Bitmap.CompressFormat.PNG, 95, new FileOutputStream(path));
                System.out.println("SUCCESS============");
            } catch (FileNotFoundException e) {
                e.printStackTrace();
                System.out.println("ERROR==============");
            }

            FileInputStream finalPath = new FileInputStream(new File(path));
            finalPath.close();

            Intent i = new Intent();
            i.setAction(Intent.ACTION_SEND);
            i.putExtra(Intent.EXTRA_TEXT, shareMessages);
            i.putExtra(Intent.EXTRA_STREAM,path);
            i.setType("image/*");
            i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            startActivity(Intent.createChooser(i,"Share"));
        }

Любая помощь или предложения будут признательны

1 Ответ

0 голосов
/ 17 октября 2019

Вы должны использовать Uri.parse(namepath.getAbsoultePath);

, это мой код и фактически работает

File root = Environment.getExternalStorageDirectory();
String location = "/" +textTitle.getText().toString()+random+"mycarta.png";

String path = root.toString() + location;
File imageDir = new File(root,location);

и использовать imageDir на Intent.EXTRA_STREAM, как показано ниже:

            Intent i = new Intent();
            i.setAction(Intent.ACTION_SEND);
            i.setType("image/png");
            i.putExtra(Intent.EXTRA_TEXT, shareMessages);
            i.putExtra(Intent.EXTRA_STREAM, Uri.parse(imageDir.getAbsolutePath()));
            i.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            startActivity(Intent.createChooser(i,"Share"));
...