是否可以设置唯一的Intent过滤器?

时间:2017-11-22 07:59:52

标签: android android-intent

我想要实现的是在浏览器,笔记应用程序或信使上点击URL时自动打开活动。

所以我有这种网址格式: http://testsite.com/code/AB1234

在AndroidManifest.xml中,我为Activity设置了Intent过滤器:

<activity android:name=".HomeActivity">
    <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:host="testsite.com"
            android:pathPrefix="/code"
            android:scheme="http" />

    </intent-filter>
</activity>

在HomeActivity中,只需从URL获取代码并在Toast上显示:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home);

    String code = getIntent().getData().getLastPathSegment();
    Toast.makeText(this, code, Toast.LENGTH_LONG).show();

}

当我点击链接时,系统会在应用程序选择器上显示我的应用程序和浏览器应用程序。我知道这个URL也可以在浏览器中处理。我想知道如果可能的话,如何使我的意图过滤器具有优先权。

是否可以自动打开我的应用程序?如果是的话怎么做?我该如何更改我的意图过滤器?

1 个答案:

答案 0 :(得分:0)

如果您可以控制链接,最简单的方法就是为您的应用设置唯一的方案。

<data android:host="testsite.com"
      android:pathPrefix="/code"
      android:scheme="myapp" />