Запустить активность с URL - PullRequest
6 голосов
/ 05 марта 2010

Я пытаюсь запустить приложение, когда пользователь переходит по определенному URL.Я нашел несколько примеров, и все они имеют одно и то же в манифестах, но это не работает для меня.Я поместил интент-фильтр в Activity и Receiver.

Вот мой фрагмент кода:

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

Когда в Activity я пытался использовать onNewIntent и когдапод Receiver я попытался использовать onReceiveIntent, оба с простым вызовом Log.i, чтобы увидеть, сработал он или нет.У меня не так много удачи.

1 Ответ

9 голосов
/ 09 марта 2012

Я использую это в моем файле manifest.xml:

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

Это запустит действие SomeName. Я не использую www в Android: часть хоста, возможно, это изменит.

Когда начинается действие, вы можете получить данные, которые находятся за .com, используя (например):

Uri data = getIntent().getData();
if(data != null && data.getPathSegments().size() >= 2){
    List<String> params = data.getPathSegments();
    String somestuff = params.get(0);
}

Редактировать: Если вы не хотите проверять хост из-за действия, используйте этот метод:

data.getHost();
...