Android 设备是否需要根目录才能从代码中截图?

Android 设备是否需要根目录才能从代码中截图?,android,screenshot,root,Android,Screenshot,Root,我已经看到许多不同的答复,所以谁能给一个积极的答复请? 运行最新操作系统的设备是否需要根目录才能从代码中截图? 我正试图这样做,我只是得到一个黑色的图片(与我的屏幕尺寸相同)。 如果您想在自己的应用程序之外拍摄其他应用程序的屏幕截图,非常感谢 是设备需要根目录 我也搜索了一下,但从未找到解决方案 即使在根目录下,也没有一个明确的解决方案可以适用于所有型号。要获取其他应用程序的屏幕截图,您需要根目录。要拍摄屏幕截图,请使用帧缓冲区 要获取应用程序的屏幕截图,您可以使用以下代码获取活动的屏幕截图:

我已经看到许多不同的答复,所以谁能给一个积极的答复请? 运行最新操作系统的设备是否需要根目录才能从代码中截图? 我正试图这样做,我只是得到一个黑色的图片(与我的屏幕尺寸相同)。
如果您想在自己的应用程序之外拍摄其他应用程序的屏幕截图,非常感谢

是设备需要根目录

我也搜索了一下,但从未找到解决方案


即使在根目录下,也没有一个明确的解决方案可以适用于所有型号。

要获取其他应用程序的屏幕截图,您需要根目录。要拍摄屏幕截图,请使用帧缓冲区

要获取应用程序的屏幕截图,您可以使用以下代码获取活动的屏幕截图:

这将获得活动的位图

代码:


你说的是哪个操作系统?对不起-kitkat和jelly Bean你不能截取整个屏幕的截图。只有你的应用程序的内容(和入口一样,你会得到你的整个布局,甚至屏幕外的东西)。谢谢你的回复。我试过你的代码和许多其他人,但我总是得到一个黑色的图片。我假设我找不到正确的视图,因为如果我使用画布并手动绘制到该画布,效果会很好,我可以在屏幕截图中看到该绘图。也许我没有从正确的地方调用代码?在所有渲染完成后,我将在渲染器中执行此操作。
public class MainAvtivity extends Activity
{
    ImageView imgView;
    Button btnScreenshot;
    View rootView;
    Bitmap bmap;

    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);
        setContentView(R.layout.main)

        imgView = (ImageView)findViewById(R.id.imageView);
        btnScreenshot = (Button)findViewById(R.id.btnScreenshot);
        rootView = findViewById(android.R.id.content).getRootView();

        btnScreenshot.setOnClickListener(new OnClickListener(){
            @Override
            public void onClick(View v){
                imgView.setImageBitmap(null);
                bmap = takeScreenshot();
                setImgView(bmap);
            }
    }
    public Bitmap takeScreenshot()
    {
        rootView.setDrawingCacheEnabled(true);
        rootView.buildDrawingCache(true);
        Bitmap b = Bitmap.createBitmap(rootView.getDrawingCache());
        rootView.setDrawingCacheEnabled(false);
        return b;
    }
    public void setImgView(Bitmap bitmap)
    {
        imgView.setImageBitmap(bitmap);
    }
}