Мне нужно открыть вкладку «Пользовательский Chrome», которая выводит пользователя на мой сайт, а затем перенаправляет пользователя обратно в приложение. Это похоже на запуск страницы для OAuth.Как перенаправить обратно в Android-приложение?
Вот что Android сторона выглядит ...
AndroidManifest.xml (добавляет фильтр намерений к деятельности для прослушивания URI)
<activity android:name=".app.MyActivity"
android:label="@string/title"
android:theme="@style/AppTheme"
android:launchMode="singleTask"
android:screenOrientation="portrait">
<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="mytest" />
</intent-filter>
</activity>
Activity.java (запускает пользовательский хром)
private void goToSite() {
CustomTabsIntent.Builder intentBuilder = new CustomTabsIntent.Builder();
int toolbarColor = getResources().getColor(R.color.primary);
intentBuilder.setToolbarColor(toolbarColor);vice_key(), shared().getAccessToken());
intentBuilder.build().launchUrl(this, Uri.parse("https://example.com/some-page"));
}
На моем сервере пользователь заполняет форму и является e ventually принес на страницу, которая, как предполагается, перенаправить их обратно в приложение ...
server.html
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>Redirecting...</title>
<script>
var redirectToApp = function() {
setTimeout(function appNotInstalled() {
window.location.replace("http://example.com/app-not-installed");
}, 100);
window.location.replace("mytest://justanexample");
};
window.onload = redirectToApp;
</script>
</head>
<body></body>
</html>
Но я не перенаправляются в приложение. Я подозреваю, что с моим кодом сервера что-то не так, потому что аналогичная настройка (манифест и код активности) работает при работе с страницами OAuth. Что не так с кодом сервера? Как я могу устранить эту проблему?
EDIT
Андроида сторона кажется правильным - Изменение кода сервера <a href="mytest://other/parameters/here">GO TO APP</a>
, кажется, работает, но мне нужен способ, который не предполагает, нажав на ссылку
EDIT 2
Приведенный выше код фактически работает:/
Поскольку я был на пользовательской вкладке Chrome, я перенаправлял к странице, на которой я был уже (поскольку активность пользовательских вкладок Chroms считается in-app). Это заставило меня думать, что не было переадресации. Комментарий Тристана помог мне понять это
Как я могу это сделать без пользователь нажимает ссылку? 'GO TO APP', похоже, работает, но мне нужен способ, который не требует нажатия ссылки –
window.location = "http://www.example.com"; Может быть? –
, который работает! здорово! –