Kotlinでアプリを動かすお勉強4


## スプレッドシートを操作

直接は関係ない話題。。

Java Quickstart  |  Sheets API  |  Google Developers
https://developers.google.com/sheets/api/quickstart/java

https://developers.google.com/sheets/api/samples/writing#append_values

* gcpでapiを有効にした
* プレイグランドで試した

https://developers.google.com/oauthplayground/

	https://sheets.googleapis.com/v4/spreadsheets/.../values/A1:E1:append?valueInputOption=USER_ENTERED

```json
{
  "range": "A1:E1",
  "majorDimension": "ROWS",
  "values": [
    ["Data", 123.45, true, "=MAX(D2:D4)", "10"]
  ],
}
```

Method： spreadsheets.values.append  |  Sheets API  |  Google Developers
https://developers.google.com/sheets/api/reference/rest/v4/spreadsheets.values/append

	ここでも試せそう

curlだとこんな感じでいけた

```bash
curl -X POST 'https://sheets.googleapis.com/v4/spreadsheets/.../values/シート1!A1:E1:append?valueInputOption=USER_ENTERED' \
-v --insecure \
--http1.1 \
-H 'Content-type: application/json' \
-H 'Authorization: Bearer ...' \
-d '{  "range": "シート1!A1:E1",  "majorDimension": "ROWS",  "values": [    ["Data", 123.45, true, "=MAX(D2:D4)", "10"]  ],}'
```

参考
curl POST examples
https://gist.github.com/subfuzion/08c5d85437d5d4f00e58
java - GoogleスプレッドシートAPI、400エラー不正リクエスト：範囲を解析できません
https://stackoverrun.com/ja/q/10444944

## DBを使う、、ことがあるかも。

kotlinでandroid入門 データベース ： SQLite - Qiita
https://qiita.com/folivora/items/72fddf741c410f2f3253

## webviewをつかってみる

［Android］ WebView でウェブアプリの作成
https://akira-watson.com/android/webview.html

	あるいはHTML文を直接読み込むこともできます。

	この他の機能としてJavaScriptを使えるようにしたり、バックキーで戻る操作ができるようにすることもできます。

何パターンかやり方があるらしい。。大枠で何がやれるかイメージできてよかった。

Android StudioでwebViewを使ってみる！ - Qiita
https://qiita.com/s-yoshiki/items/508870dfccfb237d72fd

	ローカルのHTMLを表示する場合は、/プロジェクト名/src/main/にフォルダ(assets)を作り、その中にindex.htmlを作成する。また呼び出すURIを

ローカルのファイルも観れるのね。

UIWebViewでhttpなURLにアクセスしようとしたら代わりにSFSafariViewControllerで開くようにする - Qiita
https://qiita.com/bricklife/items/ac92be3e33c7c9eaca9b
	
	https:// も用意する
	httpしか用意されていないドメインをATSのホワイトリストに入れる
	ATSを無効にする

	まずATSは有効にします。その上で、UIWebViewで https:// 以外のURLにアクセスしようとした場合、エラーが出る前にUIWebViewDelegateの webView:shouldStartLoadWithRequest: で捕まえられるので、そこでSFSafariViewControllerを開いてしまいます。

iOSの記事か。ATSという機構があるのね。

### fragmentでつかう

タブを切り替えるたびに初期化するのはどうするのかなあ。。

android - Using WebView in Fragment - Stack Overflow
https://stackoverflow.com/questions/31159149/using-webview-in-fragment

onCreateViewでやってる例。こっちの方が正しいのかもな。。
いまの自分はonViewCreatedでやってる。

### セーフブラウジング

AndroidでWebViewを使うなら新機能Safe Browsingを有効に。 - Qiita
https://qiita.com/ShingoFukuyama/items/fe047c1eadc81f60c249

	<meta-data android:name="android.webkit.WebView.EnableSafeBrowsing"
                android:value="true" />
                
使うと少し安全になるかな

### shouldOverrideUrlLoadingで検知してドメイン制限とかしたい。

【Android】WebViewの外部リンク - 0239
https://blog.a1yama.com/entry/2016/02/01/162900

	コピペで動くと思うので、そのままお使いください。

つかう。。

特定のURLへのアクセス時のみブラウザアプリを起動するWebViewアプリ | ヘビィ・ＳＭＤ！
https://ameblo.jp/smd310/entry-11140907453.html

### HTTP(S)アクセス

kotlin-AndroidでHTTPで取得したデータを表示する - 動かざることバグの如し
http://thr3a.hatenablog.com/entry/20180326/1521995307

HTTPSじゃなくて HTTPできるよではなさそうだけど、ATSを有効にしなければということかな

android - how to load http url with instantApp webview? - Stack Overflow
https://stackoverflow.com/questions/48003931/how-to-load-http-url-with-instantapp-webview

	All the network traffic from inside instant apps must use HTTPS. Instant apps does not support HTTP.

WebViewだとHTTPSの制限ということかな

## コード圧縮周りで警告が出てたので対応

コードとリソースの圧縮  |  Android Developers
https://developer.android.com/studio/build/shrink-code?hl=ja

minifyEnabled、useProguard
ちょっときになるけど、ひとまずサンプル的に真似しただけ。

## サポートライブラリ周りで警告が出てたので対応

［Android Studio］ 最新のSupport Libraryが見つからないと思ったら見つかった件 - Qiita
https://qiita.com/meru_h/items/f198a300d41e0c59aea4

きになるけど。。
昔は`compile`という記述だったのかな。