0

shouldOverrideUrlLoading に追加して、アプリ内の一部のリンクを保持し、他のリンクをモバイル ブラウザーに誘導する条件はありますか?

私の最初の考えは次のようなものでした:

if (url.contains("myurl.com")){
    //open the url in the app
}
else{
    //open the url in the mobile browser
}

私の限られた理解では、これが私が思いつくことができる最良のアイデアです。私は他のアイデアを受け入れており、構文のヘルプは大歓迎です。

4

1 に答える 1

1

あなたの最初の考えは正しいです。
実際、 shouldOverrideUrlLoading()まさにそれを行うための API の一部であると私は信じています。

アプリで URL を開く =

super.shouldOverrideUrlLoading();
mYourWebViewInstance.loadUrl(url);
return true;

モバイル ブラウザで URL を開く =

Intent browserIntent = new Intent(Intent.ACTION_VIEW, Uri.parse(url ));
startActivity(browserIntent);
return true;

このコードは、このデータ型を処理できるアプリを直接起動します。この場合は、デバイスにインストールされている任意のブラウザー アプリです。または、複数の Web ブラウザーがある場合は、ブラウザーの 1 つを選択して URL を表示するインテント チューザーを提供します。インストールされており、デフォルトに設定されているものはありません(常に...で開きます)

ドキュメントtrueに従って戻るということは、自分で URL を処理したことを意味し、イベントは消費されます。

また、 Android プラットフォームと特定のファームウェア間で一貫性がないという問題もあります。私の経験から、一部のデバイスでは、このコールバックをオーバーライドしないとデフォルトで false が返され (外部 Web ブラウザーのインテント チューザーがトリガーされます)、一部のデバイスでは返されることがわかりました。デフォルトでは真です。

そのため、アプリがすべてのデバイスでどのように動作するかを正確に把握するために、常にこのコールバックをオーバーライドする必要があります。

それで、それはあなたの質問に答えていますか?

于 2013-08-22T16:18:00.830 に答える