如何禁用Nativescript移动应用程序中的屏幕截图?

时间:2018-01-31 10:33:55

标签: nativescript android-security

在原生Android应用程序中禁用屏幕截图需要添加代码

getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);

但是如何在NativeScript应用程序中使用此安全选项?

2 个答案:

答案 0 :(得分:1)

此解决方案是在Nativescript-Vue中完成的,请根据您使用的Nativescript的版本进行调整。

导入这些:

 <input
        type="text"
        style="padding:8px;margin:15px auto;width:30%;"
        placeholder="Type to filter the name column..."
        (keyup)="updateFilter($event)"
      />
      <ngx-datatable
        #table
        class="material"
        [columns]="columns"
        [columnMode]="ColumnMode.force"
        [headerHeight]="50"
        [footerHeight]="50"
        rowHeight="auto"
        [limit]="10"
        [rows]="rows"
      >
      </ngx-datatable>




updateFilter(event) {
    const val = event.target.value.toLowerCase();

    // filter our data
    const temp = this.temp.filter(function(d) {
      return d.name.toLowerCase().indexOf(val) !== -1 ||
        d.address.toLowerCase().indexOf(val) !== -1 ||
        d.gender.toLowerCase().indexOf(val) !== -1 || !val;
    });

    // update the rows
    this.rows = temp;
    // Whenever the filter changes, always go back to the first page
    this.table.offset = 0;
  }

添加pageLoad函数以在页面加载时执行代码:

import { isAndroid, isIOS, device, screen} from "tns-core-modules/platform";
const app = require("tns-core-modules/application");

运行此代码:

<Page @loaded="pageLoad">

由我亲自测试,基本上是导入变量,然后在页面加载或创建的页面上运行上面提供的代码。

这是我对StackOverflow的第一个答案:)

答案 1 :(得分:0)

首先,如果您没有我强烈建议安装tns-platform-declarations,那么您将使用本机代码。它将极大地帮助这个过程。

完成设置后

安装并安装android之后。

import { topmost } from 'ui/frame';

如果你没有添加tns平台声明,那么你可以跳过这个。

declare const android: any;

然后将此代码放在适当的位置

//run this code if only in android application.
if(topmost().android){
    topmost().android.activity.getWindow().setFlags(android.view.WindowManager.LayoutParams.FLAG_SECURE,android.view.WindowManager.LayoutParams.FLAG_SECURE);
}

我没有亲自操作,所以我不是百分之百确定它会起作用,如果不能,它至少应该让你在那里大部分时间。