我有一个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();
答案 0 :(得分:2)
通过使用context.getPackageManager().queryIntentActivities,您可以获得能够解决您的意图的活动列表。然后,您可以使用Intent.setClassName过滤掉您的并明确选择另一个(或使用Intent.createChooser强制选择)