現在表示しているWebページのショートカットをホーム画面に作成する・・・。
まず、menu_main.xmlは、
メニューアイテムaction_make_shortcutを追加・・・。
strings.xmlで、
"ショートカットの作成"という表示名に・・・。
MainActivity.javaでは、
WebViewのwvからtitleとurlを取得・・・。
urlがあったら、まずこのアプリを起動してURLのWebページを表示するためのインテントlauncherIntentを作成・・・。
Intent.ACTION_VIEWはデータを表示する時(今回はURLのWebページを表示するから)、Intent.CATEGORY_DEFAULTはデフォルト(これがないと暗黙的なIntentに引っかからない)、setClassNameではパッケージ名とクラス名を指定する・・・。
Intent.EXTRA_TEXTというキーでtitleをセット・・・。urlはUri.parseしてsetDataに渡す・・・。
これに合わせたintent-filterをAndroidManifest.xmlに追加しておく・・・。
次にショートカットを作成するインテントを作成・・・。
Intent.EXTRA_SHORTCUT_INTENTに先ほど作成したlauncherIntent、Intent.EXTRA_SHORTCUT_NAMEはtitleにしておこう・・・。
Intent.EXTRA_SHORTCUT_ICON_RESOURCEにはアイコンリソースを渡すが、R.mipmap.ic_launcherからiconResourceを作っている・・・。
アクションにはショートカットの作成を表す文字列
"com.android.launcher.action.INSTALL_SHORTCUT"を指定・・・。
ショートカットの作成にはAndroidManifest.xmlに、
これを追加する必要がある・・・。
最後にshortcutIntentをsendBroadcastで送る・・・。
そうすると、ショートカットが作成される・・・。
あとは起動したときにインテントを取得して、URLのページを表示すればいいのだが、実はここが厄介・・・。
アプリを戻るで閉じてからショートカットで起動した場合、アクティビティを新たに生成するのでonCreate・・・。
この時はgetIntentでIntentを取得し、URIやgetStringExtraなどのパラメータを取得できる・・・。
onCreateの場合、
こんな感じでintentから取得したurlなどをargsを通じてonCreateViewの処理に渡す・・・。
でそちら側でwebViewの初期表示処理をする・・・。
しかし、アプリをホームで非表示にしてから起動した場合、再表示なのでonCreateには来ない・・・。
しかたなくonStartやonResumeでgetIntentしたが、URIやパラメータを取得できない・・・。
いろいろ探してみたが、
Androidアプリ開発メモ048:onNewIntent(): ぷ~ろぐ
既存のアクティビティの再表示にはonNewIntentが呼ばれるらしい・・・。
幸いSingleTopにしてるし・・・。
で、この引数のintentにはURIやパラメータがちゃんと格納されていた・・・。
(そのあとのonResumeなどでgetIntentしても取れないので注意・・・。)
onNewIntentの場合、
このようにonNewIntentで新しいタブを追加し、urlなどをargsを通じてonCreateViewの処理に渡す・・・。
ただ、tabHost.addTabだけではWebViewTabFragmentは生成されないので、tabHost.setCurrentTabで追加したタブを表示するように・・・。
WebViewTabFragment.javaのonCreateViewでは、
urlが取得出来たら、
webView.loadUrlでurlをロード・・・。
urlBarへのセットも忘れず・・・。
最初、この状態・・・。
まずはYahooトップ・・・。
新しいタブで、
2つ目はスポナビ・・・。
ここで"ショートカットの作成"でスポナビのショートカットを作成・・・。
こんなのが表示される場合もあるし、そうでない場合もある・・・。
また新しいタブ・・・。
3つ目はファイナンス・・・。
ここでホームボタンで隠す・・・。
"スポーツナビ"というショートカットが出来てるのでこれを押す・・・。
4つ目のタブが新しく出来て、スポナビが表示された・・・。
今度は戻るボタンで閉じてから、ショートカットを押す・・・。
新しいタブ1だけになり、そこにスポナビが表示される・・・。
https://github.com/bg1bgst333/Zinc/tree/develop/android/empty_activity/android_studio/src/Zinc