[ 
https://issues.apache.org/jira/browse/CB-1146?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13423999#comment-13423999
 ] 

Ajit Aranha commented on CB-1146:
---------------------------------

Sharing my workaround, in case it's of any help

This goes in the activity extends DroidGap class, and should probably have the 
backHistory() call integrated to be a more generic fix.


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event)
    {
        LOG.d(TAG, "KeyDown has been triggered on the view"+keyCode);
                //If volumedown key
            if (keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
                    // only override default behaviour is event bound
                    LOG.d(TAG, "Down Key Hit");
                    
this.loadUrl("javascript:cordova.fireDocumentEvent('volumedownbutton');");
                    return true;
            }
            // If volumeup key
            else if (keyCode == KeyEvent.KEYCODE_VOLUME_UP) {
                    LOG.d(TAG, "Up Key Hit");
                    
this.loadUrl("javascript:cordova.fireDocumentEvent('volumeupbutton');");
                    return true;
            }
            else
            {
                //return super.onKeyDown(keyCode, event);
            }
        //return super.onKeyDown(keyCode, event);
        return true;
    }
    

    @Override
    public boolean onKeyUp(int keyCode, KeyEvent event)
    {

        LOG.d(TAG, "KeyUp has been triggered on the view"+keyCode);

        // If back key
        if (keyCode == KeyEvent.KEYCODE_BACK) {
                
this.loadUrl("javascript:cordova.fireDocumentEvent('backbutton');");
                return true;
        }
        // Legacy
        else if (keyCode == KeyEvent.KEYCODE_MENU) {
            this.loadUrl("javascript:cordova.fireDocumentEvent('menubutton');");
            return true;
        }
        // If search key
        else if (keyCode == KeyEvent.KEYCODE_SEARCH) {
            
this.loadUrl("javascript:cordova.fireDocumentEvent('searchbutton');");
            return true;
        }
        return false;
    }

                
> Application exits if back button is pressed after a soft keyboard hide.
> -----------------------------------------------------------------------
>
>                 Key: CB-1146
>                 URL: https://issues.apache.org/jira/browse/CB-1146
>             Project: Apache Cordova
>          Issue Type: Bug
>          Components: Android
>    Affects Versions: 2.0.0
>         Environment: phonegap 2.0.0 on android 2.2 on an olive pad VT-100
>            Reporter: Ajit Aranha
>            Assignee: Joe Bowser
>
> The back button normally cause CordovaWebView.onKeyUp to be called which 
> typically either dispatches the event to javascript or calls backHistory().
> However if the softkeyboard is displayed and then hidden, and the android 
> back  button is then pressed onKeyUp is never called, and the application 
> exits instead.
>  (In this case i click on a html text input and either click on the page or 
> press android back button to hide the keyboard.Then i press the android back 
> button to go to the previous page.)
> -----------EDIT FOR CLARITY------------------
> Just to state the obvious , the current page when i am doing the above is not 
> the first page in history.
> If i don't show/hide the softkeyboard, the back button works perfectly and it 
> goes back in history.
> -----------EDIT FOR CLARITY------------------
> The log is as follows:
> 07-27 10:16:51.627: V/SoftKeyboardDetect(11190): We are in our onMeasure 
> method
> 07-27 10:16:51.627: V/SoftKeyboardDetect(11190): Old Height = 455
> 07-27 10:16:51.627: V/SoftKeyboardDetect(11190): Height = 173
> 07-27 10:16:51.627: V/SoftKeyboardDetect(11190): Old Width = 800
> 07-27 10:16:51.627: V/SoftKeyboardDetect(11190): Width = 800
> ---keyboard shown event----
> 07-27 10:16:52.207: V/SoftKeyboardDetect(11190): We are in our onMeasure 
> method
> 07-27 10:16:52.207: V/SoftKeyboardDetect(11190): Old Height = 173
> 07-27 10:16:52.207: V/SoftKeyboardDetect(11190): Height = 173
> 07-27 10:16:52.207: V/SoftKeyboardDetect(11190): Old Width = 800
> 07-27 10:16:52.207: V/SoftKeyboardDetect(11190): Width = 800
> 07-27 10:16:52.207: D/SoftKeyboardDetect(11190): Ignore this event
> 07-27 10:16:53.357: V/SoftKeyboardDetect(11190): We are in our onMeasure 
> method
> 07-27 10:16:53.357: V/SoftKeyboardDetect(11190): Old Height = 173
> 07-27 10:16:53.357: V/SoftKeyboardDetect(11190): Height = 173
> 07-27 10:16:53.357: V/SoftKeyboardDetect(11190): Old Width = 800
> 07-27 10:16:53.357: V/SoftKeyboardDetect(11190): Width = 800
> 07-27 10:16:53.357: D/SoftKeyboardDetect(11190): Ignore this event
> 07-27 10:16:53.517: V/SoftKeyboardDetect(11190): We are in our onMeasure 
> method
> 07-27 10:16:53.527: V/SoftKeyboardDetect(11190): Old Height = 173
> 07-27 10:16:53.527: V/SoftKeyboardDetect(11190): Height = 455
> 07-27 10:16:53.527: V/SoftKeyboardDetect(11190): Old Width = 800
> 07-27 10:16:53.527: V/SoftKeyboardDetect(11190): Width = 800
> --keyboard hide event---
> 07-27 10:16:54.297: V/SoftKeyboardDetect(11190): We are in our onMeasure 
> method
> 07-27 10:16:54.297: V/SoftKeyboardDetect(11190): Old Height = 455
> 07-27 10:16:54.297: V/SoftKeyboardDetect(11190): Height = 455
> 07-27 10:16:54.297: V/SoftKeyboardDetect(11190): Old Width = 800
> 07-27 10:16:54.297: V/SoftKeyboardDetect(11190): Width = 800
> 07-27 10:16:54.297: D/SoftKeyboardDetect(11190): Ignore this event
> 07-27 10:16:55.357: W/KeyCharacterMap(11190): Can't open keycharmap file
> 07-27 10:16:55.357: W/KeyCharacterMap(11190): Error loading keycharmap file 
> '/system/usr/keychars/PANJIT_Touchscreen.kcm.bin'. 
> hw.keyboards.65537.devname='PANJIT Touchscreen'
> 07-27 10:16:55.357: W/KeyCharacterMap(11190): Using default keymap: 
> /system/usr/keychars/qwerty.kcm.bin
> 07-27 10:16:55.487: D/CordovaWebView(11190): >>> loadUrlNow()
> 07-27 10:16:55.547: V/SoftKeyboardDetect(11190): We are in our onMeasure 
> method
> 07-27 10:16:55.547: V/SoftKeyboardDetect(11190): Old Height = 455
> 07-27 10:16:55.547: V/SoftKeyboardDetect(11190): Height = 455
> 07-27 10:16:55.547: V/SoftKeyboardDetect(11190): Old Width = 800
> 07-27 10:16:55.547: V/SoftKeyboardDetect(11190): Width = 800
> 07-27 10:16:55.547: D/SoftKeyboardDetect(11190): Ignore this event
> 07-27 10:16:55.787: W/IInputConnectionWrapper(11190): showStatusIcon on 
> inactive InputConnection
> ----android back button pressed application exits-----
> 07-27 10:16:56.157: D/DroidGap(11190): onDestroy()
> 07-27 10:16:56.157: D/CordovaWebView(11190): >>> loadUrlNow()
> 07-27 10:16:56.157: D/CordovaWebView(11190): >>> loadUrlNow()
> 07-27 10:16:56.197: D/DroidGap(11190): onMessage(onPageStarted,about:blank)
> 07-27 10:16:56.287: D/Cordova(11190): onPageFinished(about:blank)
> 07-27 10:16:56.287: D/DroidGap(11190): onMessage(onPageFinished,about:blank)
> 07-27 10:16:56.287: D/DroidGap(11190): onMessage(exit,null)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to