[Android-development] responding to an Android intent in a Qt app

Dirk Hohndel dirk at hohndel.org
Thu Jun 28 19:32:44 CEST 2018


Hi,

I'm pretty sure that I'm missing something fairly basic...

Our Android Qt app registers its desire to be opened when a certain type of
USB device is plugged into the Android phone / tablet:

AndroidManifest.xml:
...
            <intent-filter>
                <action android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED" />
            </intent-filter>

            <meta-data android:name="android.hardware.usb.action.USB_DEVICE_ATTACHED"
                android:resource="@xml/device_filter" />
...

The xml/device_filter.xml file is setup to list the devices that we want
to respond to.

Now if the user plugs in such a device, an Android system message pops up
and asks if they want to launch our app. Awesome, exactly what I want.

Here comes the question - inside the app, how do I know that I was
launched by that intent? And how do I get to the extra data that is
available through that intent?

Andrid docs tell me
(https://developer.android.com/guide/topics/connectivity/usb/host) that in
Java all I need to do is:

UsbDevice device = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);

and now I can get the deviceName, PID and VID for that device...

But how do I do this from a Qt app?

I found the documentation here http://doc.qt.io/qt-5/qandroidintent.html
but that still doesn't tell me how I know that I have received an intent
and how to get the Java intent object.

Because once I know that I think I should be able to get to that info via
QAndroidIntent::extraVariant(const QString &key) ...

Does someone have a working example of how a Qt Android app can respond to
a USB device being plugged in? Or any other pointers to working code?

Thanks

/D




More information about the Android-development mailing list