android 13 允许/禁止截屏

— a/android13/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
+++ b/android13/frameworks/base/services/core/java/com/android/server/policy/PhoneWindowManager.java
@@ -1601,8 +1601,16 @@ public class PhoneWindowManager implements WindowManagerPolicy {
};

 private void handleScreenShot(@WindowManager.ScreenshotType int type,
  •        @WindowManager.ScreenshotSource int source) {
    
  •    mDefaultDisplayPolicy.takeScreenshot(type, source);
    
  •        @WindowManager.ScreenshotSource int source) {        
    
  •           //add by psj 2024/01/24
    
  •           boolean isScreenshotEnabled = SystemProperties.get("persist.sys.settings_screenshot_control","1").equals("1") ? true : false;
    
  •           if(isScreenshotEnabled){
    
  •                   Log.d(TAG,"==handleScreenShot==true");
    
  •           mDefaultDisplayPolicy.takeScreenshot(type, source);             
    
  •           }else{
    
  •                   Log.d(TAG,"==handleScreenShot==false");
    
  •           }
    
  •           //===================================================================================
    

    }

    @Override

Android应用程序中,如果你想禁止设备的截屏声音,通常需要处理系统级别的权限和事件。以下是一个简单的步骤概述: 1. **检查权限**:首先,在`AndroidManifest.xml`文件中添加`<uses-permission>`标签,请求`android.permission.REORDER_TASKS`权限,这允许应用改变任务堆栈顺序,其中包括截屏操作。 ```xml <uses-permission android:name="android.permission.REORDER_TASKS" /> ``` 2. **监听系统事件**:在Activity或Service中,你可以注册一个BroadcastReceiver来监听ACTION_SCREENSHOT意图,这是当用户试图截取屏幕时系统发送的一个通知。 ```java IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_SCREENSHOT); receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { // 执行阻止截屏声音的操作 preventScreenshotSound(); } }; registerReceiver(receiver, filter); ``` 3. **防止声音播放**:在`preventScreenshotSound()`方法中,可以禁用音频播放,比如关闭铃声服务。请注意,这只是一个模拟示例,并非所有Android版本都支持直接控制截屏声音,所以可能需要借助第三方库或者反射来达到目的。 ```java // 只供演示,实际做法可能涉及底层API或者不可行 AudioManager audioManager = (AudioManager) getSystemService(AUDIO_SERVICE); audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT); // 关闭铃声 ``` 4. **清理资源**:在不需要阻止截图声音的时候,记得在合适的地方取消注册BroadcastReceiver,释放资源。 注意:这种方法可能会限制用户体验,因为截屏声音通常是提示用户屏幕已捕获的信号。在某些场景下,完全禁止可能不符合设计规范。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值