日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android 启用/禁用通过otg连接T卡功能

發(fā)布時(shí)間:2023/12/8 Android 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 启用/禁用通过otg连接T卡功能 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.調(diào)用方法:

private String setSDOTGEnable(boolean enable) {if (enable)mDPM.clearUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA);elsemDPM.addUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA); }

2.在【mt67xx_11.0】上調(diào)用以上方法并不能控制到ES文件瀏覽器識(shí)別SD卡,增加以下控制:

--- a/alps/frameworks/base/services/usb/java/com/android/server/usb/UsbHostManager.java +++ b/alps/frameworks/base/services/usb/java/com/android/server/usb/UsbHostManager.java @@ -50,6 +50,10 @@ import java.text.SimpleDateFormat;import java.util.Date;import java.util.HashMap;import java.util.LinkedList; +//add for setSDOTGEnable +import android.os.UserHandle; +import android.os.UserManager; +//add end/*** UsbHostManager manages USB state in host mode. @@ -353,6 +357,13 @@ public class UsbHostManager {@SuppressWarnings("unused")private boolean usbDeviceAdded(String deviceAddress, int deviceClass, int deviceSubclass,byte[] descriptors) { + //add by lfy for setSDOTGEnable + UserManager um = (UserManager) mContext.getSystemService(Context.USER_SERVICE); + boolean flag = um.hasUserRestriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,UserHandle.of(um.getUserHandle())); + if (flag) { + return false; + } + //add endif (DEBUG) {

以上方法實(shí)現(xiàn)的啟用/禁用otg功能在使用過(guò)程中需要在調(diào)接口前先插拔otg設(shè)備,完善缺陷修改如下:
1.在禁用前先unmount已掛載的設(shè)備&在啟用后mount已插入的設(shè)備,順序不能亂

if(!enable){unmountSD(!enable); //禁用前先unmount已掛載的設(shè)備mDPM.addUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA); }else{mDPM.clearUserRestriction(admin, UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA);unmountSD(!enable); //在啟用后mount已插入的設(shè)備 }private void unmountSD(boolean disabled) {try { //一定要有try...catchandroid.util.Log.d("lfy","mountUnmountSD......");StorageManager mStorageManager = mContext.getSystemService(StorageManager.class);StorageVolume[] volumeList = mStorageManager.getVolumeList();if (volumeList.length > 0) {for (StorageVolume vol : volumeList) {android.util.Log.d(TAG," mountUnmountSD...vol="+vol+",getId="+vol.getId()+",path="+vol.getPath()+",InternalPath="+vol.getInternalPath()+",filePath="+vol.getPathFile().getPath()+",getDescription="+vol.getDescription(mContext));if (disabled) {if (!"/storage/emulated/0".equals(vol.getPath()) && "mounted".equals(vol.getState())) {mStorageManager.unmount(vol.getId());}}else{if (!"/storage/emulated/0".equals(vol.getPath()) && "unmounted".equals(vol.getState())) {mStorageManager.mount(vol.getId());}}}}} catch(Exception e){android.util.Log.d("lfy","[FuncTools] mountUnmountSD...e="+e);e.printStackTrace();} }

2.打印log

3.如果unmountSD順序調(diào)用錯(cuò)誤(統(tǒng)一在enable判斷前調(diào)用會(huì)報(bào)如下錯(cuò)誤)

4.報(bào)錯(cuò)信息具體出處:

//frameworks/base/services/core/java/com/android/server/StorageManagerService.java @Overridepublic void mount(String volId) {enforcePermission(android.Manifest.permission.MOUNT_UNMOUNT_FILESYSTEMS);final VolumeInfo vol = findVolumeByIdOrThrow(volId);if (isMountDisallowed(vol)) { //決定存儲(chǔ)是否能掛載的關(guān)鍵throw new SecurityException("Mounting " + volId + " restricted by policy");}mount(vol);}/*** Decide if volume is mountable per device policies.*/ private boolean isMountDisallowed(VolumeInfo vol) {UserManager userManager = mContext.getSystemService(UserManager.class);boolean isUsbRestricted = false;if (vol.disk != null && vol.disk.isUsb()) {isUsbRestricted = userManager.hasUserRestriction(UserManager.DISALLOW_USB_FILE_TRANSFER,Binder.getCallingUserHandle());}boolean isTypeRestricted = false;if (vol.type == VolumeInfo.TYPE_PUBLIC || vol.type == VolumeInfo.TYPE_PRIVATE|| vol.type == VolumeInfo.TYPE_STUB) {isTypeRestricted = userManager.hasUserRestriction(UserManager.DISALLOW_MOUNT_PHYSICAL_MEDIA,Binder.getCallingUserHandle());}return isUsbRestricted || isTypeRestricted; }

總結(jié)

以上是生活随笔為你收集整理的Android 启用/禁用通过otg连接T卡功能的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。