Windows Phone APP中禁用截图_移动开发_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > 移动开发 > Windows Phone APP中禁用截图

Windows Phone APP中禁用截图

 2014/4/10 14:46:42  十一_x  博客园  我要评论(0)
  • 摘要:WindowsPhone8有系统自带的截图功能,快捷键:电源键+Win键,可以随意截图。WindowsPhone更新GDR2后新增了一个隐藏功能,允许APP禁用截图功能。PhoneApplicationPage.IsScreenCaptureEnabled这个隐藏的属性需要通过反射来访问和修改状态。publicstaticboolCanSetScreenCaptureEnabled(thisPhoneApplicationPagepage){returnEnvironment
  • 标签:Windows APP

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

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

class="brush:csharp;gutter:true;">PhoneApplicationPage.IsScreenCaptureEnabled

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

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);
        }
    }

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

      // 构造函数
        public MainPage()
        {
            InitializeComponent();

            if (this.CanSetScreenCaptureEnabled())
            {
                this.SetScreenCaptureEnabled(false);
            }
        }

目前在真机(系统为WP8,WP8.1上效果如何不懂)上测试有效,没弄懂模拟器如何像真机一样截图,所以模拟器上没成。

效果如下图

 

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

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

上一篇: android 支付宝 下一篇: 没有下一篇了!
发表评论
用户名: 匿名