强制在浏览器中打开链接以进行回退

时间:2016-02-19 09:24:55

标签: android

我有一个intent-filter,用于打开与主机的所有链接" xyzxyz.com/value"。

在清单中我设置了一个活动来接收它:

 <activity
        android:name=".ui.LinkOpenerActivity"
        android:label="@string/app_name" >
        <intent-filter android:label="@string/app_name">
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="http"
                  android:host="xyzxyz.com" />
        </intent-filter>
    </activity>

所以当用户点击&#34; xyzxyz.com/value"链接它打开应用程序,根据&#34;值&#34;执行某些操作。在URL中。

我想要做的是打开默认浏览器,以防&#34;值&#34;有不正确的价值。

我试过

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(urlReceivedFromIntent));

startActivity(browserIntent);

但它最终会进入无限循环,因为它会再次打开我的应用...任何建议在默认浏览器中回退并在其中打开http://xyzxyz.com/value

使用Intent选择器解决:

    Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
    startActivity(
            Intent.createChooser(browserIntent, null)
    );
    finish();

1 个答案:

答案 0 :(得分:2)

通过使用context.getPackageManager().queryIntentActivities,您可以获得能够解决您的意图的活动列表。然后,您可以使用Intent.setClassName过滤掉您的并明确选择另一个(或使用Intent.createChooser强制选择)