鸿蒙Next(六)禁止截屏录屏、监听横屏竖屏、设置App语言

346 阅读1分钟

一、禁止截屏录屏

使用 MainWindow的 setWindowPrivacyMode(true)方法实现

1、在 EntryAbility的 onWindowStageCreate(windowStage: window.WindowStage) 方法中可以获取到 MainWindow

windowStage.getMainWindow((err, windowClass: window.Window) => {
  this.mainWindow = windowClass;
});

2、然后通过 MainWindow设置进入隐私模式, 实现禁止截屏和录屏

this.mainWindow.setWindowPrivacyMode(true) //禁止截屏录屏

.

二、监听横屏竖屏

使用 mediaquery.matchMediaSync('(orientation: portrait)')方法实现

private portraitListener: mediaquery.MediaQueryListener = mediaquery.matchMediaSync('(orientation: portrait)');

this.portraitListener.on('change', (result)=> {
  AppStorage.setOrCreate(ScreenUtil.isPortraitKey, result.matches)
})

.

三、设置App语言

使用 i18n.System.setAppPreferredLanguage(language) 实现

示例:

import { TitleBar } from '@devwiki/common_ui';
import { i18n } from '@kit.LocalizationKit';

@Entry
@Component
struct SetLanguagePage {
  private readonly languageGroup = "languageGroup"
  @State selectedLanguage: string = 'zh-Hans';

  build() {
    Column() {
      TitleBar({
        title: $r('app.string.set_language_title')
      });

      Row() {
        Text('简体中文');
        Radio({ group: this.languageGroup, value: 'zh-Hans' }).checked(this.selectedLanguage == 'zh-Hans')
          .onChange(isChecked => {
            if (isChecked) {
              i18n.System.setAppPreferredLanguage('zh-Hans')
              this.selectedLanguage = 'zh-Hans'
            }
          });
      }

      Row() {
        Text('英文');
        Radio({ group: this.languageGroup, value: 'en-US' }).checked(this.selectedLanguage == 'en-US')
          .onChange(isChecked => {
            if (isChecked) {
              i18n.System.setAppPreferredLanguage('en-US')
              this.selectedLanguage = 'en-US'
            }
          });
      }
    }.width('100%').height('100%')
  }
}