AndroidのWebViewで「LINEで送る」ボタンに対応させる
概要
WebViewClient の shouldOverrideUrlLoading の返り値を false にしてアプリ内webviewで回遊させるようにしている場合、「LINEで送る」ボタンをクリックした後に表示される以下のような画面で「LINEアプリで開く」のボタンがそのままだと動かないのでその対応方法です。
対応方針
「LINEアプリで開く」のボタンのリンクURLはSchemeが intent://
になっています。
なので、shouldOverrideUrlLoadingで受け取ったURLのSchemeがintentだった場合に、URLからINTENTインスタンスを作るようにします。
下記のstackoverflowの記事を参考にしています。
http://stackoverflow.com/questions/33151246/how-to-handle-intent-on-a-webview-url
実装例
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if ("intent".equals(request.getUrl().getScheme())) {
onLoadIntentSchemeUrl(request);
return true;
}
return false;
}
private void onLoadIntentSchemeUrl(WebResourceRequest request) {
Intent intent;
try {
intent = Intent.parseUri(request.getUrl().toString(), Intent.URI_INTENT_SCHEME);
} catch (URISyntaxException e) {
intent = null;
}
if (intent == null) {
// URLからIntentをつくれなかった
return;
}
ResolveInfo info = getPackageManager().resolveActivity(intent, PackageManager.MATCH_DEFAULT_ONLY);
if (info != null) {
// intentに対応するパッケージがあったときだけstartActivityをする
startActivity(intent);
}
}
});
Author And Source
この問題について(AndroidのWebViewで「LINEで送る」ボタンに対応させる), 我々は、より多くの情報をここで見つけました https://qiita.com/eno314/items/c1fe383c30c741538623著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .