Chrome Custom Tabs Redirect To Android App Will Close The App
Solution 1:
I've also observed my Android app unexpectedly background after server-side 302 redirection to a custom scheme, and observed expected handling from stand-alone Chrome and manually triggered redirection in the client.
I was able to "fix" the issue by calling the warmup function before loading the url that redirects.
In other words, this works:
voidlaunchTab(Context context, Uri uri){
finalCustomTabsServiceConnectionconnection=newCustomTabsServiceConnection() {
@OverridepublicvoidonCustomTabsServiceConnected(ComponentName componentName, CustomTabsClient client) {
final CustomTabsIntent.Builderbuilder=newCustomTabsIntent.Builder();
finalCustomTabsIntentintent= builder.build();
client.warmup(0L); // This prevents backgrounding after redirection
intent.launchUrl(context, uri);
}
@OverridepublicvoidonServiceDisconnected(ComponentName name) {}
};
CustomTabsClient.bindCustomTabsService(context, "com.android.chrome", connection);
}
This doesn't work:
voidlaunchTab(Context context, Uri uri){
final CustomTabsIntent.Builderbuilder=newCustomTabsIntent.Builder();
finalCustomTabsIntentintent= builder.build();
intent.launchUrl(context, uri);
}
The Chrome Custom Tab docs describe warming up as a best practice, but it also appears to help ensure expected behavior.
In terms of env, I'm testing on a Nexus 5X w Chrome 51. My chrome tab dependency in Gradle looks like this:
dependencies {
compile'com.android.support:customtabs:24.0.0'
Solution 2:
If I used android:launchMode="singleInstance" there were multiple instances in the task manager so this was no option.
Starting the CustomTabsIntent with FLAG_ACTIVITY_NEW_TASK Flag did the trick.
CustomTabsIntent.Builderbuilder=newCustomTabsIntent.Builder();
CustomTabsIntentintent= builder.build();
intent.intent.setFlags(FLAG_ACTIVITY_NEW_TASK);
intent.launchUrl(context, Uri.parse(url));
Solution 3:
It helped me to set the Activity that I use to start a CustomTab to singleInstance mode in the manifest file:
<activity
android:launchMode="singleInstance"
android:name="com.example.SingleInstanceActivityToStartCustomTab"
</activity>
And in the code I do as usual:
CustomTabsIntent.Builderbuilder=newCustomTabsIntent.Builder();
finalCustomTabsIntentcustomTabsIntent= builder.build();
customTabsIntent.intent.setPackage(someChromePackage);
customTabsIntent.launchUrl(singleInstanceModeActivity, someUriThatDoesRedirect);
I tried warming up Chrome and even calling customTabsIntent.launchUrl()
with some delay after calling client.warmup(0l);
and neither helped.
Solution 4:
I'm pretty sure this is the result of a bug in Chrome. I updated all of my devices (GS6, GS7, Nexus 7 and Nexus 9) to the latest version of Chrome and my app is no longer minimized when the redirect occurs.
I just discovered this today (11/3/2016) so I don't yet have any information about the specific bug or its subsequent resolution. This is just what I've noticed.
Hope that helps!
Post a Comment for "Chrome Custom Tabs Redirect To Android App Will Close The App"