Aus dem folgenden Absatz gehe ich davon aus, dass ich, solange ich einen Absichtsfilter für die Aktion „USB_Device_Attached“ und einen Filter für mein Gerät korrekt einrichte, bereits über alle Berechtigungen verfügen sollte, die ich zum Herstellen einer Verbindung benötige.
Code: Select all
Note: If your application uses an intent filter to discover USB devices as they're connected, it automatically receives permission if the user allows your application to handle the intent. If not, you must request permission explicitly in your application before connecting to the device.
Code: Select all
public class MainActivity extends Activity {
private final static String TAG = "USB_HOST_EXAMPLE";
UsbManager usbManager;
UsbDeviceConnection connection;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
usbManager = (UsbManager) getSystemService(Context.USB_SERVICE);
Intent intent = getIntent();
if (intent != null) {
UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
if (device != null) {
Log.w(TAG, "Started activty from intent filter, using device: " + device.getProductName());
connection = usbManager.openDevice(device);
}
}
}
}
- App ist geschlossen
- USB-Gerät anschließen
- Popup mit der Frage, ob ich meine App öffnen möchte, um dieses USB-Gerät zu verwenden. (Mein Absichtsfilter muss also funktionieren)
- App wird geöffnet.
- App stellt eine Verbindung zum Gerät her.
- App kann keine Verbindung herstellen und antwortet mit der folgenden Ausnahme:
Code: Select all
java.lang.SecurityException: User has not given 10277/com.example.basic_usb_host permission to access device /dev/bus/usb/001/002
Ich habe auch versucht, Geräte aufzuzählen und Berechtigungen anzufordern, wie hier beschrieben, aber wenn ich mein USB-Gerät gefunden habe und auf „Berechtigungen anfordern“ gehe, erscheint das „Popup“, das beim Aufruf von
angezeigt werden sollte
Code: Select all
usbManager.requestPermission(device, permissionIntent);
Code: Select all
permission denied for device UsbDevice.....
Ich verwende Android 10 und habe das gleiche Problem mit einem Pixel 2 und Pixel 3a festgestellt (das 3a ist gerootet).
Mobile version