Tuesday, June 26, 2012

Re: [android-developers] Enforcing clearTop only when launching app from browser


i think when u launch it from browser, launch it as new_task and also add intent extra to identify that its launched from browser.  once u do this override the onNewIntent method.  in this method check for your intent extra and do something like this......

@Override protected void onNewIntent(Intent intent) {
super.onNewIntent();

check intent extra to identify if launched from browser if yes then do below things.

finish();

getApplicationContext().startActivity(new Intent(getApplicationContext(), SplashActivity.class)
                                                                        .addFlags(Intent.FLAG_ACTIVITY_NEW_TASK));
}
}



Wednesday, June 27, 2012, Goat666 <anand.thaker@gmail.com> wrote:
> Hi everyone!
> I have an application with an activity named SplashActivity which has the following intent-filters defined.
>
> <activity android:name=".SplashActivity"
>     android:configChanges="keyboardHidden|orientation"
>     android:launchMode="singleTop"
>     android:screenOrientation="portrait"
>     android:windowSoftInputMode="adjustPan">
>
>     <intent-filter>
>         <action android:name="android.intent.action.MAIN" /> 
>         <category android:name="android.intent.category.LAUNCHER" /> 
>     </intent-filter>
>
>     <intent-filter>
>         <action android:name="android.intent.action.VIEW"/> 
>         <category android:name="android.intent.category.DEFAULT"/>
>         <category android:name="android.intent.category.BROWSABLE"/> 
>         <data android:scheme="abc"/> 
>     </intent-filter>
> </activity>
>
>
> Hence the activity can be launched from the launcher or from the browser by using the scheme abc:<parameters>.
>
> Scenario 1:  I launch the app (SplashActivity) from the launcher and from SplashActivity I launch MainActivity.  Now the task has 2 activities with MainActivity on top.  I minimize with the HOME key and then relaunch the app from the launcher.  I will see the same 2 activity stack preserved.  This is the desired behavior so all is well.
>
> Scenario 2:  I launch the app (SplashActivity) from the launcher and from SplashActivity I launch MainActivity.  Now the task has 2 activities with MainActivity on top.  I minimize with the HOME key and then launch a special webpage.  This webpage has a button that launches a url with the scheme "abc:<data>".  This launches SplashActivity.  However, this is launched in the browser task.  I would like for the original minimized task to be launched with SplashActivity as the root (FLAG_ACTIVITY_NEW_TASK might unify SplashActivity with the original instance that was in the background) and I would also like to add a flag of FLAG_ACTIVITY_CLEAR_TOP so that MainActivity is closed.  How do I achieve this?
>
> The most promising option seemed to be to define SplashActivity as "singleTask" but for various reasons "singleTask" does not perform exactly as desired.  Most importantly, it seems to clear all the activities on top each time you relaunch SplashActivity.  This is fine for Scenario 2 but in Scenario 1 I do not wish to clear the activities on top.
>
> So my question is, how can I achieve an outcome in Scenario 2 where on clicking the button on the webpage, my app is launched with SplashActivity at the root (not in the browser task) and MainActivity is closed.  The issue is that we can't control the intent from the browser.
>
> Thanks!
>
> --
> You received this message because you are subscribed to the Google
> Groups "Android Developers" group.
> To post to this group, send email to android-developers@googlegroups.com
> To unsubscribe from this group, send email to
> android-developers+unsubscribe@googlegroups.com
> For more options, visit this group at
> http://groups.google.com/group/android-developers?hl=en

--
You received this message because you are subscribed to the Google
Groups "Android Developers" group.
To post to this group, send email to android-developers@googlegroups.com
To unsubscribe from this group, send email to
android-developers+unsubscribe@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/android-developers?hl=en

No comments:

Post a Comment