Предотвращение цикла браузера - PullRequest
1 голос
/ 14 октября 2011

Я создал приложение, которое открывается при нажатии на определенный URL. Очевидно, у меня есть что-то вроде этого:

        <intent-filter>
        <data android:scheme="http" android:host="example.com"/>
        <action android:name="android.intent.action.VIEW"/>
        <category android:name="android.intent.category.BROWSABLE"/>
        <category android:name="android.intent.category.DEFAULT" />
        </intent-filter>

Так что это здорово, когда кто-то нажимает на ссылку с http://example.com/whatever/stuff..., он открывает мое приложение. Тем не менее, в моем приложении, после выполнения некоторых действий, я хочу отправить suer обратно в браузер по умолчанию (или какой браузер / веб-просмотр они использовали, когда нажимали ссылку для начала). Моя проблема в том, что я в итоге создаю цикл:

  1. Пользователь нажимает ссылку http://example.com/xxx, и мое приложение открывается.
  2. Мое приложение работает, и теперь хочет отправить пользователя на другой URL, например. http://example.com/yyy
  3. Намерение, которое отправляет мое приложение, в итоге просто возвращается к самому себе (моему приложению).

    Intent httpIntent = new Intent(Intent.ACTION_VIEW);
    String theNewURL = http://example.com/yyy;
    httpIntent.setData(Uri.parse(theNewURL));
    startActivity(httpIntent);
    

Как я могу заставить мой httpIntent использовать браузер по умолчанию (или откуда бы пользователь ни пришел с самого начала) вместо повторного вызова моего приложения?

Редактировать: я смог решить эту проблему заодно, сделав запись CNAME одного из моих собственных доменов (в качестве псевдонима), которая идет в то же место, что и http://example.com. Это отстой, потому что пользователь теперь видит другой URL, но он все еще работает в том смысле, что не вызывает намерение. (Я даже использую правильный язык, когда говорю о намерениях?)

1 Ответ

0 голосов
/ 14 октября 2011
Intent HttpIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://example.com/yyy"));

startActivity(HttpIntent); 
...