私はAndroidアプリ開発に非常に慣れていませんが、アプリを含むWebサイトを持っています-アプリは単にwebviewを使用してサイトをロードします。ここまでは非常に単純です。
デスクトップ ユーザーはサイト自体を使用し、Web サイトで見つけたリンクを共有したいと考えているため、モバイル ユーザーは、たとえば Facebook にアクセスして、アクセスしたいリンクを表示すると、単純にその Web サイトをこれは明らかにユーザーを断片化/混乱させます (Web サイトにはまずログイン システムがあり、Android ブラウザーから再度ログインする必要があります)。
Android 内でウェブサイトへのリンクをリッスンし、ブラウザではなくアプリのウェブビューで開く方法はありますか? Facebook には、代わりにアプリを開く fb:// リンクがあることを知っています。
ただし、問題はさらに複雑です。事実上、内部リンクが外部の Android ブラウザーを起動するのを防ぐために、次の効果を持つフィルターがあります。
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.contains("root_address_of_site/page/")) {
return false;
} else {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
}
return true;
}
アプリ内で基本的な URL を介して Facebook、Twitter、およびカレンダーへのリンクを共有できるため、Twitter へのリンクはhttps://twitter.com/intent/tweet?original_referer=root_address_of_site/page/&text=page_name&tw_p=tweetbutton&url=のようになります。 root_address_of_site/page/ . もちろん、インテント URL に「root_address_of_site/page/」が「含まれている」ため、これは単純にフィルタに引っかかります。「url.contains」ではなく「begins with」になるようにフィルターを変更する方法があるのだろうか? つまり、Twitter/Facebook のリンクは引き続き外部で開かれますが、サイト自体へのリンクは、何があってもアプリ内で開かれます。
それが理にかなっているといいのですが、説明するのは難しいです。これについて助けてくれてありがとう!