2016-01-14 3 views
2

Мне нужно открыть вкладку «Пользовательский 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). Это заставило меня думать, что не было переадресации. Комментарий Тристана помог мне понять это

ответ

4

Вы можете просто использовать Javascript, как объяснено в ответе This.

В основном вы будете делать ссылку с

<a href="intent://example.com#Intent;scheme=http;package=com.example.mypackage;end"> 

, в котором пакет = ваше имя пакета

Для получения дополнительной информации см этот вопрос Open android application from a web page

+0

Как я могу это сделать без пользователь нажимает ссылку? 'GO TO APP', похоже, работает, но мне нужен способ, который не требует нажатия ссылки –

+1

window.location = "http://www.example.com"; Может быть? –

+0

, который работает! здорово! –

Смежные вопросы