无论如何都要访问IUsbManager接口类来调用service.grantDevicePermission()方法来自动设置USB设备的权限,而不必总是让ConfirmationActivity询问用户?
谢谢
解决方法:
当然是的!你可以使用这段代码,为我工作:
public boolean grantautomaticPermission(UsbDevice usbDevice) { try { Context context=YourActivityOrApplication; PackageManager pkgManager=context.getPackageManager(); ApplicationInfo appInfo=pkgManager.getApplicationInfo(context.getPackagename(), PackageManager.GET_Meta_DATA); Class serviceManagerClass=Class.forname("androID.os.ServiceManager"); Method getServiceMethod=serviceManagerClass.getDeclaredMethod("getService",String.class); getServiceMethod.setAccessible(true); androID.os.IBinder binder=(androID.os.IBinder)getServiceMethod.invoke(null, Context.USB_SERVICE); Class iUsbManagerClass=Class.forname("androID.harDWare.usb.IUsbManager"); Class stubClass=Class.forname("androID.harDWare.usb.IUsbManager$Stub"); Method asInterfaceMethod=stubClass.getDeclaredMethod("asInterface", androID.os.IBinder.class); asInterfaceMethod.setAccessible(true); Object iUsbManager=asInterfaceMethod.invoke(null, binder); System.out.println("UID : " + appInfo.uID + " " + appInfo.processname + " " + appInfo.permission); final Method grantDevicePermissionMethod = iUsbManagerClass.getDeclaredMethod("grantDevicePermission", UsbDevice.class,int.class); grantDevicePermissionMethod.setAccessible(true); grantDevicePermissionMethod.invoke(iUsbManager, usbDevice,appInfo.uID); System.out.println("Method OK : " + binder + " " + iUsbManager); return true; } catch(Exception e) { System.err.println("Error trying to assing automatic usb permission : "); e.printstacktrace(); return false; } }
我所做的是实现androID使用反射这样做的方式.要使用此代码,您必须具有:
<uses-permission androID:name="androID.permission.MANAGE_USB"/>
但是有一个问题,我不确切地说,如果我错了,请纠正我:USER拥有权限,而不是应用程序,然后如果您尝试从应用程序仪表板启动应用程序,您将失败.有必要确保比androID开始你的应用程序,例如,将其设置为启动器并让它以HOME意图开始.
问候,期待可以帮助别人.
总结以上是内存溢出为你收集整理的Android USB自动授予权限全部内容,希望文章能够帮你解决Android USB自动授予权限所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)