Windows Phone APP中禁用截图

原文:Windows Phone APP中禁用截图

Windows Phone 8 有系统自带的截图功能,快捷键:电源键+Win键,可以随意截图。

Windows Phone 更新GDR2后新增了一个隐藏功能,允许APP禁用截图功能。

1
PhoneApplicationPage.IsScreenCaptureEnabled

 这个隐藏的属性需要通过反射来访问和修改状态。

Windows Phone APP中禁用截图
public static bool CanSetScreenCaptureEnabled(this PhoneApplicationPage page)
        {
            return Environment.OSVersion.Version >= new Version(8, 0, 10322);
        }

        public static void SetScreenCaptureEnabled(this PhoneApplicationPage page, bool enabled)
        {
            var propertyInfo = typeof(PhoneApplicationPage).GetProperty("IsScreenCaptureEnabled");

            if (propertyInfo == null)
            {
                throw new NotSupportedException("Not supported in this Windows Phone version!");
            }

            propertyInfo.SetValue(page, enabled);
        }

        public static bool GetScreenCaptureEnabled(this PhoneApplicationPage page)
        {
            var propertyInfo = typeof(PhoneApplicationPage).GetProperty("IsScreenCaptureEnabled");

            if (propertyInfo == null)
            {
                throw new NotSupportedException("Not supported in this Windows Phone version!");
            }

            return (bool)propertyInfo.GetValue(page);
        }
    }
Windows Phone APP中禁用截图

调用CanSetScreenCaptureEnabled()方法检测Windows Phone版本是否符合要求(version 8.0.10322以上)。符合条件,然后就通过扩展方法GetScreenCaptureEnabled()和SetScreenCaptureEnabled()来修改PhoneApplicationPage.IsScreenCaptureEnabled属性。
使用:

Windows Phone APP中禁用截图
      // 构造函数
        public MainPage()
        {
            InitializeComponent();

            if (this.CanSetScreenCaptureEnabled())
            {
                this.SetScreenCaptureEnabled(false);
            }
        }
Windows Phone APP中禁用截图

目前在真机上测试有效,没弄懂模拟器如何像真机一样截图,所以模拟器上没成。

效果如下图

Windows Phone APP中禁用截图

 

以后就有些东西不能截图了( ╯□╰ )

 对了,需要看原文的戳:Disabling screenshot functionality in a Windows Phone app  。

Windows Phone APP中禁用截图,布布扣,bubuko.com

Windows Phone APP中禁用截图

上一篇:IDEA报错Error : java 不支持发行版本5


下一篇:rt-thead 多片内存加入堆管理