【发布时间】:2018-01-31 10:33:55
【问题描述】:
在原生Android应用中禁用screenshors需要添加代码
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
但是如何在 NativeScript 应用程序中使用这个安全选项呢?
【问题讨论】:
标签: nativescript android-security
在原生Android应用中禁用screenshors需要添加代码
getWindow().setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE);
但是如何在 NativeScript 应用程序中使用这个安全选项呢?
【问题讨论】:
标签: nativescript android-security
这个方案是在Nativescript-Vue中完成的,请根据你使用的Nativescript的不同进行调整。
导入这些:
import { isAndroid, isIOS, device, screen} from "tns-core-modules/platform";
const app = require("tns-core-modules/application");
添加 pageLoad 函数以在页面加载时执行代码:
<Page @loaded="pageLoad">
运行此代码:
pageLoad: function() {
if (isAndroid) {
if (app.android && device.sdkVersion >= '21') {
const window = app.android.startActivity.getWindow();
window.setFlags(android.view.WindowManager.LayoutParams.FLAG_SECURE,
android.view.WindowManager.LayoutParams.FLAG_SECURE);
}
}
}
我亲自测试,基本上是导入变量,然后在页面加载或创建的页面上运行上面提供的代码。
这是我在 StackOverflow 上的第一个答案 :)
【讨论】:
首先,如果您还没有使用本机代码,我强烈建议您安装 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);
}
我没有亲自运行过这个程序,所以我不能 100% 确定它会起作用,如果不起作用,它至少应该能让你大部分时间到达那里。
【讨论】: