java-是否可以通过编程方式关闭Android设备上的USB存储设备?
作者:互联网
我试图一遍又一遍地搜索,并感到困惑,我们是否可以控制USB存储而无需植根电话,如果可以的话?我尝试了以下方法来启用和禁用权限,但全部无效:
StorageManager storage = (StorageManager)getApplicationContext().getSystemService(STORAGE_SERVICE);
Method method = storage.getClass().getDeclaredMethod("enableUsbMassStorage");
method.setAccessible(true);
Object r = method.invoke(storage);
//And to disble mass storage:
StorageManager storage = (StorageManager) getApplicationContext().getSystemService(STORAGE_SERVICE);
Method method = storage.getClass().getDeclaredMethod("disableUsbMassStorage");
method.setAccessible(true);
Object r = method.invoke(storage);
如果有人对此有任何想法,请分享您的知识.
提前致谢.
解决方法:
您问题的简短答案是“否”.您不能以编程方式使用USB大容量存储权限.您也不会找到任何能可靠地对任何/所有手机执行此操作的Android应用.
默认情况下,Android框架不允许第三方应用程序以编程方式绕过USB存储权限.该选择始终留给用户,这是正确的方法.只需考虑一下:如果允许,任何第三方应用程序都可能滥用该许可并通过USB连接传输数据.
您尝试使用的方法假设我们知道相关方法的名称,并通过反射对其进行调用.这将对某些修改了基本框架并公开了相关API调用的OEM起作用.但是它假定您知道这些方法的名称,并且只能在现有大量Android手机模型中的一小部分上使用.它不适用于大多数手机,当然也不能用于具有原始Android OS源代码的所有Nexus设备.
就这些.
标签:reflection,android-permissions,android-usb,java,android 来源: https://codeday.me/bug/20191028/1950392.html