【问题标题】:How to intercept android take screenshot如何拦截android截屏
【发布时间】:2013-05-13 13:54:11
【问题描述】:

如何在 android 4.0+ 上拦截截屏事件? 音量下+电源键截图的时候我想执行一些自己的代码。

【问题讨论】:

    标签: android screenshot


    【解决方案1】:

    Here有一篇关于防止截图的好博文,但是我不知道有没有办法在用户执行截图时执行代码...

    您可以使用 WindowManager 中的FLAG_SECURE 以避免屏幕截图

    例子:

    public class FlagSecureTestActivity extends Activity {
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
    
        getWindow().setFlags(LayoutParams.FLAG_SECURE,
                             LayoutParams.FLAG_SECURE);
    
        setContentView(R.layout.main);
      }
    }
    

    【讨论】:

    • 虽然该链接可能包含答案,但链接会随着时间的推移而中断。考虑用简短的摘要更新您的答案,因此如果该链接消失,它仍然对其他人有帮助:)
    • 感谢您的建议 ;-)
    【解决方案2】:

    这不太可能,您最终可以监听屏幕截图保存位置的更改并使用 FileObserver 执行一些代码

    https://developer.android.com/reference/android/os/FileObserver.html

    这里最大的问题是,许多设备使用不同的截屏方式,从根本无法截屏,到甚至不用任何键都可以截屏。

    使用其他答案中建议的 Flag.Secure 在某些情况下有效,在其他情况下会弄乱您的屏幕。

    【讨论】:

    • 我们可以捕获关键事件吗?降低音量+电源键事件。
    • 是的,使用带有当前按键集合的 KeyListener,请参见此处:stackoverflow.com/questions/2623995/…
    • 这是给摇摆的。我用的是android,android sdk api可以捕获当前按下的按键吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-22
    • 1970-01-01
    • 2011-07-09
    • 2013-06-25
    相关资源
    最近更新 更多