0

我正在开发一个需要打开网络浏览器才能显示网页的应用程序。另外,用户可以使用我自己的应用程序打开,所以我需要显示所有可用的网络浏览器,然后处理用户选择的选项。到目前为止,我打开了上下文菜单,但我不知道如何用我需要的项目填充它。

public void onCreateContextMenu(ContextMenu menu, View v,
        ContextMenuInfo menuInfo) {
    Log.d("WebOff","Creating ContextMenu");
    menu.setHeaderTitle("MyTitle");
    menu.setHeaderIcon(R.drawable.MyIcon);
    menu.add("MyItem");
}

我想要实现的看起来像这样,但是在设备和我的应用程序中安装了浏览器。

提前致谢。

4

2 回答 2

0

尝试这个

public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) {
    String url = "http://www.google.com";
    Intent i = new Intent(Intent.ACTION_VIEW);
    i.setData(Uri.parse(url));
    ComponentName caller = new ComponentName(Activity.this, Activity.class);

    menu.addIntentOptions(0, 0, 0,caller, null, i, Menu.FLAG_APPEND_TO_GROUP,null) ;
}
于 2012-12-16T15:46:29.350 回答
0

您指向的图像不是上下文菜单。相反,它是使用您想要使用的(例如,在您的网页 URL 上)调用startActivity()Intent结果ACTION_VIEW

通常,用户只有一个浏览器,因此startActivity()不会显示如图所示的选择器对话框。如果用户确实有多个浏览器,并且用户没有选择默认浏览器,通常会出现选择器对话框。

您声明“我需要显示所有可用的网络浏览器”。请记住,如果用户已经选择了默认浏览器,他们可能不喜欢你强迫他们做出另一个选择。话虽如此,您可以调用startActivity(Intent.createChooser(viewIntent, "some caption")),您通常使用的viewIntent对象在哪里,并且是您希望在对话框顶部显示的内容(其中图像有写得不好的“选择想要文件/文件的应用程序”被发送”)。IntentstartActivity()"some caption"

您进一步声明您想要“然后处理用户选择的选项”。使用标准选择器机制这是不可能的——Android 会为您处理选择。如果您确实需要“处理用户选择的选项”,您将需要创建自己的选择器对话框,使用PackageManagerqueryIntentActivities()获取数据以填充该对话框。

于 2012-12-16T15:43:27.273 回答