表示をPCサイトに切り替えるには、Webアクセス時のUserAgentをPCのブラウザ用にすればいい・・・。
ちょっと古いけど、
Androidブラウザの「パソコンサイト表示」のユーザーエージェント « kawama.jp
ここにあるUserAgent、
"Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36"
に変更する・・・。
まずはmenu_main.xmlで、
action_show_pcsiteを追加・・・。
action_show_pcsite_textはstrings.xmlに、
最初は"PCサイトの表示"となる・・・。
MainActivity.javaだが、
tabHost.addTabの第3引数にBundle型argsを渡していて、中身はtabTagName・・・。
tabSpecでtabTagNameをセットしていると思うが、どうもWebViewTabFragmentにはtabTagNameは届いていない模様・・・。
ここでも・・・。
"PCサイトの表示"を押すと、なんとかして現在のタブに紐づいているWebViewTabFragmentを取得し、それのisPCメンバがfalseならwf.reloadPCSiteでPCサイトでリロード、trueならwf.reloadPhoneでモバイルサイトでリロード・・・。
あ、そうそう・・・。
tabHost.clearAllTabsのあとに、fragmentTransaction.removeによる削除は、落ちる時があるのでいらない模様・・・。
(実際にFragmentがちゃんと消えてるかは怪しいのだが・・・。)
メニューを表示させるときも、現在のisPCの状況によって"PCサイトの表示"と"モバイルサイトの表示"を切り替える・・・。
WebViewTabFragment.javaは、
isPCはPCサイト表示かどうか、phoneUAはモバイルサイト用UserAgent、pcUAはPC用UserAgent、tagはこのフラグメントのタグ・・・。
savedInstanceStateにはBundleが渡されないので注意である・・・。
getArgumentsからbundleを取得し、bundleからtagを取得する・・・。
そしたらtagをfragmentViewにセットする・・・。
こうすると、別の場所からこのFragmentを取得するための手掛かりとなるタグが付く・・・。
これにより、fragmentManagerから探しているWebViewTabFragmentを取得できる・・・。
phoneUAは、webView.getSettings().getUserAgentStringで取得、
pcUAは、先ほどのUserAgent文字列をセットしておく・・・。
最初はモバイルなので、webView.getSettings().setUserAgentStringでphoneUAをセットする・・・。
もし、モバイルじゃない場合はpcUAをセットする・・・。
reloadPCSiteは、isPCをtrueにし、pcUAをセットしてリロード・・・。
reloadPhoneは、isPCをfalseにし、phoneUAをセットしてリロード・・・。
これでメニューで切り替えができる・・・。
普通に表示するとモバイルサイト表示・・・。
メニューから、"PCサイトの表示"を押すと、
横に広がったPCサイトに・・・。
メニューを開くと、"モバイルサイトの表示"になっているのでこれを押すと、
元に戻る・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc