竞学网,满座网临平,林娜冰21
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 m上锁屏情况下,禁止pc通过mtp访问手机存储单元就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持移动技术网。
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
Android studio 解决logcat无过滤工具栏的操作
Android Studio 恢复小窗口停靠模式(Docked Mode)
Android studio保存logcat日志到本地的操作
Android Studio快捷键生成TAG、Log.x日志输出介绍
网友评论