[ https://issues.apache.org/jira/browse/CB-3949?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Kuan Yi Ming updated CB-3949: ----------------------------- Attachment: Cordova281-debug.apk > Add code fix to broken activity sequence > ---------------------------------------- > > Key: CB-3949 > URL: https://issues.apache.org/jira/browse/CB-3949 > Project: Apache Cordova > Issue Type: Bug > Components: Android > Affects Versions: 2.7.0, 2.8.0 > Reporter: Kuan Yi Ming > Assignee: Joe Bowser > Priority: Minor > Attachments: Cordova281-debug.apk > > > If installing an app via sideloading on Android and opening it immediately > after install via package installer, going through several pages, then > pressing Home and later resuming the app later via opening the app from the > may break the page sequence by creating a new CordovaActivity instance on top > of the previous one. > Tested on a Galaxy Nexus, Android 4.2 > Steps to replicate: > # Copy APK over to phone storage and install it. > # Click 'Open' when the package installer has installed the app, instead of > clicking 'Done' > # Open several pages (e.g. index.html -> page1.html -> page2.html) > # Press Home to pause the app, then reopen the app from the app drawer (not > the Recent Apps list). > # The app will relaunch as if it were a new activity instance (showing > splashscreen again if configured, and adds index.html to the page sequence, > instead of returning to page2.html which is where the user last was) > # Pressing > These steps can't be replicated if the app was originally opened in the app > drawer, a shortcut in the homescreen, or launched via Eclipse's Run button. > Some bugs filed on Android's issue tracker suggest this can happen by > clicking 'Open' on apps freshly installed from the Play Store too. > This probably is an Android issue with the package installer (probably due to > the package installer calling a non-standard intent) and not PhoneGap, but > appears to be fixed by using singleTop as the activity launch mode, or adding > code before calling super.loadUrl() in the activity to check for Intent > anomalies: > {code:java} > Intent intent = getIntent(); > String intentAction = intent.getAction(); > if (!isTaskRoot() && intent.hasCategory(Intent.CATEGORY_LAUNCHER) && > intentAction != null) { > if(intentAction.equals(Intent.ACTION_MAIN)) { > Log.d("Cordova", "This isn't the root activity. Clearing it > and returning to the root activity."); > finish(); > return; > } > } > {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira