完美解決android M上鎖屏情況下,禁止pc通過MTP訪問手機存儲單元
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。
這樣就實現(xiàn)該功能。
2、當解鎖時,自動加載手機存儲單元:
添加解鎖監(jiān)聽
+ 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上發(fā)送解鎖狀態(tài)的廣播code沒有去除,可以查看/m8976/frameworks/base/packages/SystemUI/src/com/android /systemui/keyguard/KeyguardViewMediator.java
在KeyguardViewMediator.java文件中可以看出,在解鎖時,發(fā)送Intent.ACTION_USER_PRESENT廣播,然后在MtpService.java
進行接收,對mMtpDisabled進行處理。
以上這篇完美解決android M上鎖屏情況下,禁止pc通過MTP訪問手機存儲單元就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Android 使用 Path 實現(xiàn)搜索動態(tài)加載動畫效果
這篇文章主要介紹了Android 使用 Path 實現(xiàn)搜索動態(tài)加載動畫效果,本文通過圖文并茂的形式給大家介紹的非常詳細,需要的朋友可以參考下2018-08-08Android亮度調(diào)節(jié)的幾種實現(xiàn)方法
本篇文章詳細介紹了Android亮度調(diào)節(jié)的幾種實現(xiàn)方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下。2016-11-11JetPack Compose底部導航欄的實現(xiàn)方法詳解
開發(fā)一個新項目,底部導航欄一般是首頁的標配,在以前的xml布局中,我們可以很輕松的是用谷歌提供的BottomNavigationView或者自定義來實現(xiàn)底部導航的功能,在Compose中也有也提供了一個類似的控件androidx.compose.material.BottomNavigation2022-09-09Android Activity啟動模式之standard實例詳解
這篇文章主要介紹了Android Activity啟動模式之standard,結(jié)合實例形式較為詳細的分析了Android中活動(Activity)四種啟動模式中的standard相關(guān)注意事項與實現(xiàn)技巧,需要的朋友可以參考下2016-01-01Android?配合Mat工具監(jiān)聽查找內(nèi)存泄漏的操作方法
這篇文章主要介紹了Android?配合Mat工具監(jiān)聽查找內(nèi)存泄漏問題,使用Android Studio Profiler查看內(nèi)存的操作,本文通過圖文實例相結(jié)合給大家介紹的非常詳細,需要的朋友可以參考下2022-05-05