uni-app 实现 app禁止录屏功能

发布于 1周前 作者 nodeper 来自 Uni-App

uni-app 实现 app禁止录屏功能

android ios有禁止录屏的插件?

5 回复

专业插件开发 Q 1196097915


可以做,个人便宜双端插件开发,联系QQ:1804945430

app进入后台透明效果、应用内禁止截屏录屏(andorid):https://ext.dcloud.net.cn/plugin?id=2379
监听屏幕录屏通知(ios):https://ext.dcloud.net.cn/plugin?id=2301

承接双端(Android,iOS)原生插件开发,uni-app外包项目开发。
接受已有项目的二次开发、修改功能、修复问题bug等任何开发相关的单
QQ:1559653449 VX:fan-rising

在uni-app中实现禁止录屏功能是一个复杂且受限的任务,因为大多数操作系统(如iOS和Android)并不提供直接禁止录屏的API。然而,可以通过一些间接手段来尝试检测录屏行为,并在检测到录屏时采取相应措施,比如显示警告信息或者终止当前操作。以下是一些思路及代码示例,尽管这些方法并不能完全禁止录屏,但可以增加录屏的难度。

1. 通过检测屏幕截图尝试间接检测录屏

虽然录屏和截图在技术上不同,但检测截图行为可以在一定程度上提示可能的录屏行为。以下是一个在Android平台上利用AccessibilityService检测截图的示例(注意:此方法在iOS上不可用,且Android上需要申请相关权限)。

Android AccessibilityService 代码示例

首先,创建一个自定义的AccessibilityService

// MyAccessibilityService.java
import android.accessibilityservice.AccessibilityService;
import android.view.accessibility.AccessibilityEvent;

public class MyAccessibilityService extends AccessibilityService {
    @Override
    public void onAccessibilityEvent(AccessibilityEvent event) {
        if (event.getEventType() == AccessibilityEvent.TYPE_WINDOW_STATE_CHANGED) {
            // 检测截图事件
            if (event.getClassName().equals("android.app.WallpaperManagerService")
                && event.getText().toString().contains("screenshot")) {
                // 截图检测逻辑,如发送广播通知应用
            }
        }
    }

    @Override
    public void onInterrupt() {
        // 处理服务中断
    }
}

然后,在AndroidManifest.xml中声明服务并请求必要权限:

<service
    android:name=".MyAccessibilityService"
    android:permission="android.permission.BIND_ACCESSIBILITY_SERVICE">
    <intent-filter>
        <action android:name="android.accessibilityservice.AccessibilityService" />
    </intent-filter>
    <meta-data
        android:name="android.accessibilityservice"
        android:resource="@xml/accessibility_service_config" />
</service>

accessibility_service_config.xml配置文件:

<accessibility-service xmlns:android="http://schemas.android.com/apk/res/android"
    android:accessibilityEventTypes="typeWindowStateChanged"
    android:accessibilityFeedbackType="feedbackSpoken"
    android:notificationTimeout="100"
    android:canRetrieveWindowContent="true"
    android:canRequestFilterKeyEvents="true"
    android:settingsActivity="com.example.SettingsActivity"
    android:description="@string/accessibility_service_description"
    android:packageNames=""/>

注意事项

  • 上述方法并不能100%检测录屏行为,仅作为一种间接手段。
  • 在iOS上,由于系统限制,几乎没有有效的录屏检测手段。
  • 实现此类功能需考虑用户隐私和权限问题,避免滥用。

总之,虽然完全禁止录屏在技术上难以实现,但通过上述方法可以在一定程度上增加录屏的难度。

回到顶部