标签:reflection android-permissions android-usb java android
我试图一遍又一遍地搜索,并感到困惑,我们是否可以控制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
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。