Java 如何分享活动截图?

Java 如何分享活动截图?,java,android,share,screenshot,Java,Android,Share,Screenshot,我尝试了一个代码来截取一个活动的屏幕截图,然后分享它,这是非常好的工作,但只是在低于6.0的Android中,从6.0和更高,当我点击分享按钮,然后选择社交网络一个简短的对话框告诉我“无法加载图像” 我需要你的帮助,我的朋友们 这是我使用它的代码: share.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Bit

我尝试了一个代码来截取一个活动的屏幕截图,然后分享它,这是非常好的工作,但只是在低于6.0的Android中,从6.0和更高,当我点击分享按钮,然后选择社交网络一个简短的对话框告诉我“无法加载图像” 我需要你的帮助,我的朋友们 这是我使用它的代码:

share.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Bitmap bitmap = takeScreenshot();
            saveBitmap(bitmap);
            shareIt();
        }

        public Bitmap takeScreenshot() {
            View rootView = findViewById(android.R.id.content).getRootView();
            rootView.setDrawingCacheEnabled(true);
            return rootView.getDrawingCache();
        }
        public void saveBitmap(Bitmap bitmap) {
            imagePath = new File(Environment.getExternalStorageDirectory() + "/screenshot.png");
            FileOutputStream fos;
            try {
                fos = new FileOutputStream(imagePath);
                bitmap.compress(Bitmap.CompressFormat.JPEG, 100, fos);
                fos.flush();
                fos.close();
            } catch (FileNotFoundException e) {
                Log.e("GREC", e.getMessage(), e);
            } catch (IOException e) {
                Log.e("GREC", e.getMessage(), e);
            }
        }
        private void shareIt() {
            Uri uri = Uri.fromFile(imagePath);
            Intent sharingIntent = new Intent(android.content.Intent.ACTION_SEND);
            sharingIntent.setType("image/*");
            String shareBody = "In Tweecher, My highest score with screen shot";
            sharingIntent.putExtra(android.content.Intent.EXTRA_SUBJECT, "My Tweecher score");
            sharingIntent.putExtra(android.content.Intent.EXTRA_TEXT, shareBody);
            sharingIntent.putExtra(Intent.EXTRA_STREAM, uri);

            startActivity(Intent.createChooser(sharingIntent, "Share via"));
        }
    });

    displayResults();
}
编辑: 我尝试替换
Uri=Uri.fromFile(imagePath)
by
uriuri=FileProvider.getUriForFile(context,context.getApplicationContext().getPackageName()+“.my.package.name.provider”,imagePath)
但它说当我点击共享按钮时,应用程序停止了

如果
FileUriExposedException
是导致问题的异常,请提供任何帮助:-

当应用程序向另一个应用程序公开文件://Uri时,会引发此异常

这仅针对目标为Build.VERSION\u code.N或更高版本的应用程序引发。针对早期SDK版本的应用程序可以共享file://Uri,但强烈建议不要这样做

这些链接可能给出上述问题的详细答案:-


希望这有帮助。

试试这个:我认为Android 6+增加了只接受content://uri而不接受file://的限制,你必须通过ContentProvider@MarcosVasconcelos谢谢,我该怎么做呢,我是一个初学者,我试图替换Uri=Uri.fromFile(imagePath)的可能重复的代码;按Uri Uri=FileProvider.getUriForFile(context,context.getApplicationContext().getPackageName()+“.my.package.name.provider”,imagePath);但它说,当我点击“共享”按钮时,应用程序停止了please@LeoSanchez检查上的链接comments@MarcosVasconcelos谢谢,我检查了一下,试了一下,但没有解决办法