cordova-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Kuan Yi Ming (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-3949) Add code fix to broken activity sequence
Date Thu, 29 Aug 2013 14:34:52 GMT

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

Kuan Yi Ming commented on CB-3949:
----------------------------------

Looks like isTaskRoot() doesn't update itself quickly enough, if it were real time the Push
Notification plugin would work just fine.

Did a quick check instead, this time using flags:

Opened via package manager's 'Open' button after install from sideload
FLAG_RECEIVER_FOREGROUND

Opened from launcher after opening from package manager first, then pressing HOME
!isTaskRoot()
FLAG_ACTIVITY_BROUGHT_TO_FRONT + FLAG_RECEIVER_FOREGROUND + FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

Opened via launcher
FLAG_RECEIVER_FOREGROUND + FLAG_ACTIVITY_RESET_TASK_IF_NEEDED

Opened by notification in PushPlugin if app was already closed
!isTaskRoot()
FLAG_RECEIVER_FOREGROUND

Perhaps filtering out FLAG_ACTIVITY_BROUGHT_TO_FRONT would be an alternative? Didn't check
if this might clash with other plugins though.

{code:java}
    private void checkIntents() {
        if ((getIntent().getFlags() & Intent.FLAG_ACTIVITY_BROUGHT_TO_FRONT) != 0) {
            Log.d(TAG, "This isn't the root activity. Clearing it and returning to the root
activity.");
            finish();
            return;
        }
    }
{code}
                
> 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 attached APK over to phone storage and install it.
> # Click 'Open' when the package installer has installed the app, instead of clicking
'Done'
> # Press the button in index.html to open the next page.
> # 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 where the
user last was)
> # Pressing back at this index page closes the new CordovaActivity and returns to the
second page from the previous activity.
> 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

Mime
View raw message