Yas*_*een 5 java capacitor capacitor-plugin
这是一个离子电容器角度项目,我试图在其中构建一个电容器插件,以便我只能为所需的页面/屏幕禁用屏幕截图。
我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);
}});
}
}
Run Code Online (Sandbox Code Playgroud)
现在我有电容器插件“screenshot-plugin”,其中我有两种方法可以“设置”和“清除”项目中特定页面/屏幕的标志。
截图.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);
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我得到一个例外only thread which created the view can modify it。
所以我尝试使用,MainActivity activity = new MainActivity()以便我可以getWindow()在此活动上调用方法,但是cannot resolve symbol即使在导入包时也会出现错误com.abc.myapp。
此外,当我尝试getWindow()在屏幕截图插件中没有活动的情况下使用时getBridge().getActivity(),AndroidStudio 会出现编译错误,使用然后调用 getWindow() 方法(如在代码中)会消除编译错误,但给出了上述只能MainActivity这样做的异常。
我可以在 MainActivity 本身中编写这 2 个方法,但不确定如何在 ionic 项目组件中访问这些方法。
使用插件,我可以在我的组件中调用这些方法,但是如何使其仅适用于少数组件/页面/屏幕而不是整个 android 应用程序。
请帮助,提前致谢。
我知道类似的问题已经存在,但他们的用例和我的不同。
您可以在要禁用的页面中执行以下操作:
getWindow().setFlags(WindowManager.LayoutParams.FLAG_SECURE,
WindowManager.LayoutParams.FLAG_SECURE);
Run Code Online (Sandbox Code Playgroud)
并从您不需要的页面中删除标志:
getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE);
Run Code Online (Sandbox Code Playgroud)
注意:不是 100% 确定,但可能会提供一些想法。
| 归档时间: |
|
| 查看次数: |
339 次 |
| 最近记录: |