WebView.loadUrlに指定するURLは"http://"とか"https://"が付いていることが必須となっている・・・。
そのため、"www.google.co.jp"や、"yahoo.co.jp"のように"http://"が付いていない場合は付けないといけない・・・。
一方で、"http://"が付いている場合だけ、URLバーから"http://"を省略したい気もする・・・。
shouldOverrideUrlLoadingの部分で、
showという一時的なStringオブジェクトを作成し、先頭が"http://"なら、7文字目からshowに入れる・・・。つまり"http://"を除いた文字列をshowに代入し、これをurlBarにセット・・・。
そうでない場合は、そのままshowに代入し、urlBarにセット・・・。
これでURL上書きが発生する場合は、URLバーから"http"が表示されなくなる・・・。
さて、いまのところURLをロードするパターンは、
1.BUTTON1を押してurlLoad
2.リンク内をクリック
3.URLリダイレクト
4.ブックマーク選択からのurlLoad
だが、shouldOverrideUrlLoadingが呼ばれるのは2と3で、1と4はurlLoad前に"http"省略しないといけない・・・。
しかも、urlLoad自体は"http"が必須なので、showは"http"省略、loadは"http"補完しないといけない・・・。
BUTTON1が押されたら、"https://"ならshowもloadもurlをそのまま、"http://"ならshowのほうを省略させる・・・。
それ以外は"https://"も"http://"もないので、HTTPとみなしてloadに"http://"を補完・・・。showはそのまま・・・。
showはurlBar.setTextし、loadはwebView.loadUrlする・・・。
これで1もできるようになった・・・。
ブックマークアクティビティで選択された戻ってきたときに、bundleからurlを受け取ったら、先ほどと同じようにshowに省略URL、loadに補完URLを格納し、urlBarとwebViewにセット・・・。
これで4もOK・・・。
パターン1の"http://"のつくURLをBUTTON1でロードの場合、
ロードされてるし省略もされてる・・・。
ここから、
"yahoo.co.jp"を指定してBUTTON1を押す・・・。
リダイレクトされるから2のパターン・・・。
shouldOverrideUrlLoadingを通るので問題なく省略・・・。
SportsNaviを押す3のパターン・・・。
これも省略・・・。
ここでブックマークの管理から、
"http://www.google.co.jp/"を選択、4のパターン・・・。
loadUrl前で省略してるので、こうなる・・・。
ちなみにブックマーク登録の時は、URLはWebViewからとってきてるので、"http://"のついたフルパスになる・・・。
まあこの辺はこっちのほうがいいのかなあとおもって、そのまま・・・。
また最後のスラッシュの処理は残ってるが、複雑そうなのでいまのところはこれで・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc