gpt4 book ai didi

java - 如何仅在几个页面而不是整个应用程序中禁用电容器插件中的屏幕截图

转载 作者:行者123 更新时间:2023-12-03 17:22:32 25 4
gpt4 key购买 nike

这是一个 ionic 电容器角度项目,我正在尝试构建一个电容器插件,以便我只能禁用所需页面/屏幕的屏幕截图。
我用过getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);在 MainActivity 内 onCreate()方法,它可以工作,但它会禁用整个应用程序的屏幕截图,这不是预期的结果。
MainAcitivity.java:

public class MainActivity extends BridgeActivity {

@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

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

// Initializes the Bridge
this.init(savedInstanceState, new ArrayList<Class<? extends Plugin>>() {{
// Additional plugins you've installed go here
// Ex: add(TotallyAwesomePlugin.class);
add(Contacts.class);
add(Screenshot.class);
}});
}
}
现在我有电容器插件“screenshot-plugin”,其中我有 2 种方法来“设置”和“清除”项目中特定页面/屏幕的标志。
截图.java:
@NativePlugin
public class Screenshot extends Plugin {

@PluginMethod
public void echo(PluginCall call) {
String value = call.getString("value");

JSObject ret = new JSObject();
ret.put("value", value);
call.success(ret);
}

@PluginMethod
public void enableScreenshot(PluginCall call) {
try {
Activity activity = getBridge().getActivity();
activity.getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
} catch (Exception e) {
Log.e("ABC", "Exception in enableScreenshot", e);
}
JSObject ret = new JSObject();
ret.put("status", true);
call.success(ret);
}

@PluginMethod
public void disableScreenshot(PluginCall call) {
try {
Activity activity = getBridge().getActivity();
activity.getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE);
} catch (Exception e) {
Log.e("ABC", "Exception in disableScreenshot", e);
}
JSObject ret = new JSObject();
ret.put("status", true);
call.success(ret);
}

}
在这里我得到一个异常(exception) only thread which created the view can modify it .
所以我尝试使用 MainActivity activity = new MainActivity()这样我就可以调用 getWindow()此 Activity 的方法,但这会产生错误 cannot resolve symbol即使导入包 com.abc.myapp .
另外,当我尝试使用 getWindow()屏幕截图插件中没有 Activity ,则 AndroidStudio 会给出编译错误,使用 getBridge().getActivity()然后调用 getWindow() 方法(如代码中所示)删除编译错误,但仅给出 MainActivity 的上述异常可以这样做。
我可以在 MainActivity 本身中编写这两种方法,但不确定如何在 ionic 项目组件中访问这些方法。
使用插件我可以在我的组件中调用这些方法,但是如何使它只适用于少数组件/页面/屏幕,而不适用于整个 android 应用程序。
请帮助,在此先感谢。
我知道类似的问题已经存在,但他们的用例和我的不同。

最佳答案

您可以在要禁用的页面中执行以下操作:

  getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE, 
WindowManager.LayoutParams.FLAG_SECURE);
并从您不想要的页面中删除标志:
  getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); 
注意:不是 100% 肯定,但可能会给出一些想法。

关于java - 如何仅在几个页面而不是整个应用程序中禁用电容器插件中的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66421901/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com