我们在根设备上安装了一个应用程序作为系统应用程序。后者没有android.permission.MANAGE_USB,我们想将它添加到更新的版本,以便自动给予用户权限。我跟着帖子了:
bypass android usb host permission confirmation dialog
更具体地说,答案从用户d_d_t标记为正确。
为什么不起作用?我的意思是,我已经采用了这个更新的版本,直接安装它作为我们的原始系统应用程序,它的工作完美!但是,当我更新现有版本而没有新版本的usb权限时,它就无法正常工作。新的只是一个更新。相同的证书和所有。
我不知所措。有什么想法吗?
我们的代码如下:
的AndroidManifest.xml。
<uses-permission
android:name="android.permission.MANAGE_USB"
android:protectionLevel="signature" />
Java类。
try {
PackageManager pm = getApplicationContext().getPackageManager();
ApplicationInfo ai = pm.getApplicationInfo(getApplicationContext().getPackageName(), 0);
if (ai != null) {
UsbManager manager = (UsbManager) getApplicationContext().getSystemService(Context.USB_SERVICE);
IBinder b = ServiceManager.getService(Context.USB_SERVICE);
IUsbManager service = IUsbManager.Stub.asInterface(b);
HashMap<String, UsbDevice> deviceList = manager.getDeviceList();
Iterator<UsbDevice> deviceIterator = deviceList.values().iterator();
while (deviceIterator.hasNext()) {
UsbDevice device = deviceIterator.next();
if (device.getVendorId() == 0x0403) {
service.grantDevicePermission(device, ai.uid);
service.setDevicePackage(device,getApplicationContext().getPackageName(), 0);
}
}
}
} catch (Exception e) {
Log.e("UsbReceiver", "exception " + e);
e.printStackTrace();
}