[Android-development] Forcing native menubar to show

maitai at virtual-winds.org maitai at virtual-winds.org
Sat Oct 4 17:05:42 CEST 2014


Hello,
I am trying on a rather old tablet running Android 4.0.4 (api level 15). 
This device does not have physical keys at all, all is managed from the 
android system status bar which shows 3 or 4 icons depending on the 
case. The fourth icon is the option menu (the 3 vertical dots), and is 
missing when my qt application is running, although I do have a menubar 
in my QMainwindow. I discovered that if I specify uses-sdk 
android:targetSdkVersion="10" then the icon is here, but nothing happens 
when I press it, so it's rather useless. I also tried a variety of 
themes with no luck.

After some more digging, I found out that one could do something like 
that:
...
     boolean hasMenu = ViewConfiguration.get(this).hasPermanentMenuKey();
     if(!hasMenu){
         //getWindow().setFlags(0x08000000, 0x08000000);
         try {            
getWindow().addFlags(WindowManager.LayoutParams.class.getField("FLAG_NEEDS_MENU_KEY").getInt(null));
           }
...

but I don't know how to call something like that from qt application...

So I am still at lost on that one :)

Thanks for any hints,
Philippe



Le 03-10-2014 10:30, maitai at virtual-winds.org a écrit :
> Hi again,
> 
> I do have a QMainWindow with setMenuBar(menubar). On my device
> (Samsung Galaxy S4/Android 4.4.2), the menuBar is not displayed on the
> screen but available through the physical left button. On the user's
> device (Samsung Galaxy S5/Android 4.4.2) the menu does not appear
> anywhere too, but since they have replaced the left button with a
> "task" button he is obliged to press-long this physical key to get the
> menus, a rather obscure way that most users won't know about:
> 
> http://www.androidcentral.com/samsung-galaxy-s5-menu-button-hidden
> 
> Do you mean the menu should be appearing like on a desktop?
> 
> Thanks
> Philippe.
> 
> Le 03-10-2014 08:40, BogDan a écrit :
>> Hi,
>> 
>>   If you are using a QMainWindow which have menus, then the menu bar
>> will be displayed automatically.
>> 
>> 
>> Cheers,
>> BogDan.
>> 
>> 
>> ----- Original Message -----
>> From: "maitai at virtual-winds.org" <maitai at virtual-winds.org>
>> To: Android Development <Android-development at qt-project.org>
>> Cc:
>> Sent: Thursday, October 2, 2014 5:09 PM
>> Subject: Re: [Android-development] Forcing native menubar to show
>> 
>> Hello again.
>> 
>> Concerning this issue (being able to call the native menu from the
>> application), is there anything I can try?
>> 
>> The thing is that some users are on a samsumg galaxy s5, for which 
>> they
>> just removed the menu key so the application must provide a 
>> menu-button
>> somewhere (well the user can press-long the new "Task" button instead
>> but nobody knows it). Some other devices also do not have a physical
>> menu button (nexus for instance). I found various posts on internet
>> concerning this, for instance:
>> 
>> http://stackoverflow.com/questions/15250024/show-options-menu-button-on-galaxy-nexus-android-4-1
>> 
>> What would be the best way to deal with that kind of devices? I do 
>> need
>> a menu somewhere :)
>> 
>> Thanks,
>> Philippe Lelong
>> 
>> Le 20-08-2014 18:27, maitai at virtual-winds.org a écrit :
>>> Hello,
>>> 
>>> Any hope this is going to be pushed in 5.4? I'm still trying to find 
>>> a
>>> way to trigger android native menu programatically...
>>> 
>>> Thanks
>>> Philippe LELONG
>>> 
>>> Le 04-04-2014 07:29, BogDan a écrit :
>>>> Hi,
>>>> 
>>>>   There are two pending
>>>> patches https://codereview.qt-project.org/#change,72098
>>>> and https://codereview.qt-project.org/#change,72099 that does
>>>> everithing you want, sadly except me, nobody wanted to approve 
>>>> them...
>>>> 
>>>> 
>>>> Cheers,
>>>> BogDan.
>>>> 
>>>> 
>>>>> 
>>>>> Coming back on this:
>>>>> 
>>>>> I have investigated using QtAndroid (5.3.0-beta1) to achieve that 
>>>>> and
>>>>> I
>>>>> guess this is the way to go.
>>>>> 
>>>>> I have tried various things involving QAndroidJniObject,
>>>>> QAndroidJniEnvironment and QtAndroid::androidActivity(), but didn't
>>>>> succeed to get what I want.
>>>>> 
>>>>> For instance:
>>>>> 
>>>>>      QAndroidJniObject activity=QtAndroid::androidActivity();
>>>>>      bool
>>>>> b=QAndroidJniObject::isClassAvailable("android/app/Activity");
>>>>>      qWarning()<<"class available?"<<b;
>>>>>      //QAndroidJniObject activity("android/app/Activity");
>>>>>      if(activity.isValid())
>>>>>      {
>>>>>          qWarning()<<"activity is valid";
>>>>> 
>>>>> activity.callMethod<void>("openOptionsMenu","()V");
>>>>>      }
>>>>> 
>>>>> I guess my approach is too simplistic but I couldn't google any 
>>>>> good
>>>>> example to do this..
>>>>> 
>>>>> Any help or hint would be really appreciated
>>>>> 
>>>>> Thanks
>>>>> Philippe LELONG
>>>>> 
>>>>> Le 01-04-2014 15:27, maitai at virtual-winds.org a écrit :
>>>>>>  Hello,
>>>>>> 
>>>>>>  I have a QMenubar which became "native" on android, all is good.
>>>>> I
>>>>>>  would
>>>>>>  like to know if it's possible somehow to trigger it
>>>>>> programatically?
>>>>>> 
>>>>>>  I have tried various menuBar->show() or submenu->exec()...
>>>>>> apparently
>>>>> 
>>>>>>  no
>>>>>>  way.
>>>>>> 
>>>>>>  The reason I am trying to do that is that I want to show a
>>>>> "native"
>>>>>>  contextual menu on tap-and-hold, the current QMenu that I can 
>>>>>> popup
>>>>>>  does
>>>>>>  not look "android" enough to me...
>>>>>> 
>>>>>>  Thanks
>>>>>>  Philippe LELONG
>>>>>>  _______________________________________________
>>>>>>  Android-development mailing list
>>>>>>  Android-development at qt-project.org
>>>>>>  http://lists.qt-project.org/mailman/listinfo/android-development
>>>>> 
>>>>> _______________________________________________
>>>>> Android-development mailing list
>>>>> Android-development at qt-project.org
>>>>> http://lists.qt-project.org/mailman/listinfo/android-development
>>>>> 
>> _______________________________________________
>> Android-development mailing list
>> Android-development at qt-project.org
>> http://lists.qt-project.org/mailman/listinfo/android-development



More information about the Android-development mailing list