Android 如何防止在我的Flitter应用程序的特定部分截图?
有了它的帮助,我可以在我的应用程序中阻止截图,但我如何才能只在我的应用程序的特定部分使用它。它使我的整个应用程序无法共享 我有一个向我的高级会员展示说明的部分。我不想让用户截图 我的应用程序在kotlin中有MainActivity,所以当我从提到的线程复制java代码时,我的IDE将其转换为kotlinAndroid 如何防止在我的Flitter应用程序的特定部分截图?,android,flutter,kotlin,dart,Android,Flutter,Kotlin,Dart,有了它的帮助,我可以在我的应用程序中阻止截图,但我如何才能只在我的应用程序的特定部分使用它。它使我的整个应用程序无法共享 我有一个向我的高级会员展示说明的部分。我不想让用户截图 我的应用程序在kotlin中有MainActivity,所以当我从提到的线程复制java代码时,我的IDE将其转换为kotlin import android.os.Bundle import android.view.WindowManager.LayoutParams import androidx.annotati
import android.os.Bundle
import android.view.WindowManager.LayoutParams
import androidx.annotation.NonNull;
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugins.GeneratedPluginRegistrant
class MainActivity: FlutterActivity() {
override fun configureFlutterEngine(@NonNull flutterEngine: FlutterEngine) {
GeneratedPluginRegistrant.registerWith(flutterEngine);
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window.setFlags(LayoutParams.FLAG_SECURE, LayoutParams.FLAG_SECURE)
}
}
您必须使用
MethodChannel
来执行此操作,并随意调用该方法启用/禁用屏幕截图
你可以检查一下怎么做。示例调用一个方法来获取电池电量,只需将其替换为Kotlin方法来启用/禁用屏幕截图
然后,您可以执行以下操作来传递参数,以决定它是启用还是禁用:
final platform = MethodChannel("your_channel_name");
platform.invokeMethod('setScreenshotEnableStatus',{'enabled': true})
并且,从MethodCallHandler
接收的MethodCall
对象,可以通过以下方式恢复该参数:
call.argument('enabled')
另一种方法是创建两个本机方法,一个用于enable,一个用于disable,并相应地调用它们
本机集成的另一个资源可能是,我快速浏览了这篇文章,它看起来还可以。您可以使用专门为此目的而设计的Flutter包 虽然Android本机支持一系列窗口模式,但在运行的Flatter应用程序中动态设置这些模式并没有好办法,而是要求在Flatter应用程序本身的本机MainActivity中设置这些标志 在我们的应用程序中,我们只希望禁用特定屏幕的屏幕截图,而不是在整个应用程序生命周期中。现在只需调用以下命令即可完成此操作:
await FlutterWindowManager.addFlags(FlutterWindowManager.FLAG_SECURE);
用于相关屏幕
对于特定的屏幕,还可以使用RouteAware mixin,或者在有状态小部件的情况下,通过initState()和dispose()方法中的直接切换来进一步切换