ilovecomputer66 发表于 2023-6-11 08:16

安卓开发现在还有办法实现普通app(非系统app)静默截图么?

首先声明,甲方提的需求,他们自己内部app,进行反馈时使用,说是员工水平普遍不高,app做成各种弹出申请权限手工设置的,一堆人搞不定,所以要这个

请各位讨论技术问题

网上有说 用 反射调用 android.view.SurfaceControl 的 screenshot 方法

试了下,虽然在高低版本手机,都不会catch到exception,但最后都返回null

private Bitmap screenShotByReflect() {

      try {
            Class<?> demo = Class.forName("android.view.SurfaceControl");

            // 安卓8.0左右的低版本 的screenshot函数是2个参数
//            DisplayMetrics mDisplayMetrics = new DisplayMetrics();
//            float[] dims = {mDisplayMetrics.widthPixels, mDisplayMetrics.heightPixels};
//            Method method = demo.getDeclaredMethod("screenshot", int.class, int.class);
//            return (Bitmap) method.invoke(null, (int) dims, (int) dims);

            // 高版本安卓系统,比如安卓11改为4个参数的函数
            Method method = demo.getDeclaredMethod("screenshot", Rect.class, int.class, int.class, int.class);
            return (Bitmap) method.invoke(null, new Rect(), 0, 0, Surface.ROTATION_0);
      } catch (Exception e) {
            e.printStackTrace();
            return null;
      }
    }

wystudio 发表于 2023-6-11 08:27

我有一个方法可以实现,但是只能截图本APP的页面,不能截取其他页面

ilovecomputer66 发表于 2023-6-11 08:51

wystudio 发表于 2023-6-11 08:27
我有一个方法可以实现,但是只能截图本APP的页面,不能截取其他页面

噢噢,这个不用。我这边之前就实现了

adamfh 发表于 2023-6-11 09:04

以前低版本还可以实现,现在各大版本都不可以实现了吧?
能不能调用系统的截图功能?

Bakura 发表于 2023-6-11 09:21

这种问题去找骗夕夕的员工问下,他们比Google还清楚。

wystudio 发表于 2023-6-11 09:44

ilovecomputer66 发表于 2023-6-11 08:51
噢噢,这个不用。我这边之前就实现了

甲方需求不就是在他们的内部APP截图么,难道还要到其他地方去截图?

vaycore 发表于 2023-6-11 10:10

我记得有个屏幕录制权限吧,开了应该就可以了

仧小张 发表于 2023-6-11 11:57

getDeclaredMethod 这个可能获取到 私有 的方法   用setAccessible(true) 设置下试试?

天天涨停天天盈 发表于 2023-6-11 12:10

远程控制员工手机,设置一下可以吗

海绵宝宝_ 发表于 2023-6-11 13:29

没办法了,就算有,官方也会在最新系统修复掉
页: [1] 2 3 4
查看完整版本: 安卓开发现在还有办法实现普通app(非系统app)静默截图么?