0

我创建了一个 Intent 过滤器,可以在单击“ http://www.myapp.com/1234 ”等指定链接时打开我的应用程序。当我单击链接时,系统会要求我打开应用程序,然后,一切正常。然后,我通过反复单击后退按钮退出应用程序,直到所有活动都关闭。但:

  1. 从启动器再次启动应用程序后,当我单击链接时,它会收到与以前相同的 Intent 数据。如何避免?

  2. 当我从链接打开我的应用程序时,即。来自 WhatsApp,正如我在应用程序管理器中看到的那样,WhatsApp 是打开的应用程序!为什么?

这是我当前的清单代码:

    <activity
        android:name="com.x.y.SplashActivity"
        android:label="@string/app_name"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />

            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
        <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="@string/app_host"
                android:pathPrefix="/events/"
                android:scheme="http" />
        </intent-filter>
    </activity>

在我的onCreate()

    // Retrieve the Intent
    Intent intentUri = getIntent();

    // Check URI
    Uri uri = intentUri.getData();

    if (uri != null) {
        // Try to extract the data
        // For now, data could be a public event id, so parse it
        List<String> pathSegments = uri.getPathSegments();

        // Check validity
        if (pathSegments.size() > 2) {
            // Finally, get the public event id
            String publicEventId = pathSegments.get(2);

            // Set poll as responded
            user.setPollEventId(publicEventId);
        }

        // Remove the intent to prevent further calls
        setIntent(null);
    }

    // Open the main activity normally
    Intent intent = new Intent(this, MainActivity.class);
    startActivity(intent);
4

0 回答 0