屏幕截图中显示警告对话框

时间:2014-03-12 06:54:09

标签: java android alertdialog android-alertdialog

我必须设计一个应用程序,在其中点击中性按钮,警报对话框的图像存储在SD卡中。 所以我决定以编程方式截取屏幕截图,然后使用BitmapDecodeRegion类来裁剪图像。

但是当我拍摄截图时,警报对话框不会出现在其中,因为它没有附加到窗口。 如何将其附加到窗口?

这是代码段:

public void btnClick(View v) {
    Log.d("", "logger button clicked");
    AlertDialog.Builder dialog = new AlertDialog.Builder(this);
    dialog.setTitle("This is a demo!");
    dialog.setMessage("Lets see if this works");
    dialog.setCancelable(false);
    dialog.setNeutralButton("Take Snap",
            new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {

                    Bitmap bitmap;
                    View v1 = findViewById(android.R.id.content)
                            .getRootView();
                    v1.setDrawingCacheEnabled(true);
                    bitmap = Bitmap.createBitmap(v1.getDrawingCache());
                    GlobalObj.screenImg = bitmap;
                    v1.setDrawingCacheEnabled(false);

                    Intent i = new Intent(MainActivity.this,
                            ViewActivity.class);
                    startActivity(i);

                }
            });

    AlertDialog newDialog = dialog.create();
    newDialog.show();

请帮助我。

2 个答案:

答案 0 :(得分:0)

试试这个图书馆:https://github.com/jraska/Falcon。 它包含所有活动窗口的截图,包括对话框,可以找出问题所在。

答案 1 :(得分:0)

在您的代码中更改此行:

View v1 = findViewById(android.R.id.content)
                        .getRootView();

到此:

View v1 = AlertDialog.class.cast(dialog).getWindow().getDecorView().getRootView();

它适用于我,不需要root电话。但是,这仅捕获黑色背景上的警报对话框,而不包含活动的基础视图。如果你想拥有一切(不是那么简单),你可以试试Aswin Rajendiran的this answer