它采取截图但没有在画廊中显示

时间:2018-02-08 09:09:20

标签: java android bitmap

当我检查设备存储时有屏幕截图文件时,它正在截取屏幕截图但没有显示,但是当我尝试点击它们时,它说无法找到应用程序来打开此文件。

我必须将我的应用程序的ui作为图像分享

button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        View rootView = getWindow().getDecorView().findViewById(android.R.id.content);
        Bitmap bitmap = getScreenShot(rootView);
        store(bitmap,"share_image");
    }
});


public static Bitmap getScreenShot(View view) {
    View screenView = view.getRootView();
    screenView.setDrawingCacheEnabled(true);
    Bitmap bitmap = Bitmap.createBitmap(screenView.getDrawingCache());
    screenView.setDrawingCacheEnabled(false);
    return bitmap;
}


public  void store(Bitmap bm, String fileName){
   dirPath = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Screenshots";
    File dir = new File(dirPath);
    if(!dir.exists())
        dir.mkdirs();
    File file = new File(dirPath, fileName);
    try {
        FileOutputStream fOut = new FileOutputStream(file);
        bm.compress(Bitmap.CompressFormat.PNG, 85, fOut);
        fOut.flush();
        fOut.close();
        shareImage(file);

    } catch (Exception e) {
        e.printStackTrace();
    }
}

private void shareImage(File file){
    Uri uri = Uri.fromFile(file);
    Intent intent = new Intent();
    intent.setAction(Intent.ACTION_SEND);
    intent.setType("image/*");

    intent.putExtra(android.content.Intent.EXTRA_SUBJECT, "");
    intent.putExtra(android.content.Intent.EXTRA_TEXT, "");
    intent.putExtra(Intent.EXTRA_STREAM, uri);
    try {
        startActivity(Intent.createChooser(intent, "Share Screenshot"));
    } catch (ActivityNotFoundException e) {
        Toast.makeText(getApplicationContext(), "No App Available", Toast.LENGTH_SHORT).show();
    }
}

1 个答案:

答案 0 :(得分:0)

您正在调用文件 share_image 。它没有扩展名,因此系统会将其视为空白的基本文件。

当您使用 png 压缩时,请添加" .png"到文件名。

store(bitmap,"share_image.png");