完美解决android M上锁屏情况下,禁止pc通过MTP访问手机存储单元

作者:jingxian 时间:2023-01-23 07:55:37 

1、问题解决主要文件:/m8976/packages/providers/MediaProvider/src/com/android/providers/media/MtpService.java

需要在MtpService.java中updateDisabledStateLocked 方法添加锁屏情况限制:


final KeyguardManager keyguardManager = (KeyguardManager) getSystemService(
       Context.KEYGUARD_SERVICE);
mMtpDisabled = (keyguardManager.isKeyguardLocked() && keyguardManager.isKeyguardSecure()) || !mUnlocked || !isCurrentUser;

只要锁屏,mMtpDisabled就设置为true。

这样就实现该功能。

2、当解锁时,自动加载手机存储单元:

添加解锁监听


+  private final BroadcastReceiver mReceiver = new BroadcastReceiver() {
+    @Override
+    public void onReceive(Context context, Intent intent) {
+      final String action = intent.getAction();
+      if (Intent.ACTION_USER_PRESENT.equals(action)) {
+        // If the media scanner is running, it may currently be calling
+        // sendObjectAdded/Removed, which also synchronizes on mBinder
+        // (and in addition to that, all the native MtpServer methods
+        // lock the same Mutex). If it happens to be in an mtp device
+        // write(), it may block for some time, so process this broadcast
+        // in a thread.
+        new Thread(new Runnable() {
+          @Override
+          public void run() {
+            synchronized (mBinder) {
+              // Unhide the storage units when the user has unlocked the lockscreen
+              if (mMtpDisabled) {
+                addStorageDevicesLocked();
+                mMtpDisabled = false;
+              }
+            }
+          }}, "addStorageDevices").start();
+      }
+    }
+  };

Android M上发送解锁状态的广播code没有去除,可以查看/m8976/frameworks/base/packages/SystemUI/src/com/android /systemui/keyguard/KeyguardViewMediator.java

在KeyguardViewMediator.java文件中可以看出,在解锁时,发送Intent.ACTION_USER_PRESENT广播,然后在MtpService.java

进行接收,对mMtpDisabled进行处理。

标签:android,锁屏,mtp,存储
0
投稿

猜你喜欢

  • Templates实战之更优雅实现自定义View构造方法详解

    2021-12-22 13:22:40
  • Android sharedPreferences实现记住密码功能

    2022-09-11 13:58:37
  • java实现快速排序图文详解

    2022-10-11 16:35:18
  • 一起聊聊Java中13种锁的实现方式

    2022-11-23 15:26:00
  • SpringBoot+Elasticsearch实现数据搜索的方法详解

    2023-04-17 02:45:46
  • Java使用Collections.sort()排序的方法

    2022-09-11 18:47:55
  • Android WebView开发之自定义WebView工具框

    2023-01-12 13:41:43
  • Spring Boot和Kotlin的无缝整合与完美交融

    2022-07-08 04:54:09
  • Java中实现文件预览的功能(实例代码)

    2023-09-09 16:13:06
  • Java递归算法遍历部门代码示例

    2021-08-03 20:59:20
  • ConcurrentHashMap 存储结构源码解析

    2022-09-28 08:32:41
  • java实现转圈打印矩阵算法

    2022-11-27 06:38:21
  • Android 在 res/layout 文件夹 下创建一个 子文件夹实例

    2021-07-31 22:50:21
  • 详解Eclipse 字体、字号的设置、最佳字体推荐

    2023-11-26 12:25:32
  • 安卓(Android)中如何实现滑动导航

    2023-10-17 10:51:18
  • idea的使用之关于tomcat热部署的教程

    2022-12-02 20:16:46
  • 解决idea中yml文件不识别的问题

    2021-12-07 02:09:28
  • Java实现的RSA加密解密算法示例

    2022-05-03 09:20:38
  • Android仿微信雷达辐射搜索好友(逻辑清晰实现简单)

    2022-07-25 05:28:19
  • Android使用ViewDragHelper实现QQ6.X最新版本侧滑界面效果实例代码

    2022-10-14 08:38:22
  • asp之家 软件编程 m.aspxhome.com