0

Webページを表示するためにWebブラウザを開く必要があるアプリケーションを開発しています。さらに、ユーザーは自分のアプリケーションを使用して開くことができるため、使用可能なすべてのWebブラウザーを表示してから、ユーザーが選択したオプションを処理する必要があります。これまでのところ、コンテキストメニューを開いていますが、必要なアイテムを入力する方法がわかりません。

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

あなたが指している画像はコンテキストメニューではありません。むしろ、それはあなたが使用したい(例えば、あなたのウェブページのURLで)と呼んstartActivity()だ結果です。IntentACTION_VIEW

通常、ユーザーはブラウザを1つしか持っていないためstartActivity()、画像に示されているような選択ダ​​イアログは表示されません。ユーザーが複数のブラウザーを使用していてユーザーがデフォルトのブラウザーを選択していない場合、通常は選択ダイアログが表示されます。

「利用可能なすべてのWebブラウザを表示する必要があります」とあなたは述べています。ユーザーがすでにデフォルトのブラウザを選択している場合、ユーザーが別の選択を強制することに感謝しない可能性があることに注意してください。そうは言っても、あなたは呼び出すことができます、あなたは通常あなたがちょうど使用したであろう場所startActivity(Intent.createChooser(viewIntent, "some caption"))viewIntentあり、あなたがダイアログの上部に表示したいものです(画像には不十分に書かれた「ファイル/ファイルが欲しいアプリケーションを選択してください送信されます")。IntentstartActivity()"some caption"

さらに、「ユーザーが選択したオプションを処理する」ことを指定します。これは、標準のチューザーメカニズムを使用しては不可能です。Androidが選択を処理します。本当に「ユーザーが選択したオプションを処理する」必要がある場合は、を使用して独自のチューザーダイアログを作成し、そのPackageManagerダイアログqueryIntentActivities()にデータを入力する必要があります。

于 2012-12-16T15:43:27.273 に答える
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 に答える