もくもくログ
主にIT 関連のメモをもくもくと綴っていきます
2020/04/18 ~ 04/24 のもくもく日記 をご覧ください。
Android でカメラ撮影Intent を投げると、撮影結果をonActivityResulet で受け取るんだけど、その結果Intent.data でサムネイルを返すこともあるらしい……ん?
これ、IntentBuilder で実装するとしたら、どこに定義すべきなんだろう?
まずは試しにBuilder 実装にcompanion object として定義してみた……。
class TakePictureIntentBuilder : IntentBuilder<SupplierIntent>() {
companion object {
fun parseThumbnail(resultIntent: Intent?): Bitmap? = resultIntent
?.getParcelableExtra("data")
}
......
}
なんか変じゃね?
結果に対して組み立てするわけでは無いので、下記のように書き換えてみた。
class TakePictureIntent(
val imageUri: Uri
) : SupplierIntent() {
companion object {
fun parseThumbnail(resultIntent: Intent?): Bitmap? = resultIntent
?.getParcelableExtra("data")
}
init {
action = MediaStore.ACTION_IMAGE_CAPTURE
addFlags(FLAG_GRANT_WRITE_URI_PERMISSION)
putExtra(MediaStore.EXTRA_OUTPUT, imageUri)
}
......
}
class TakePictureIntentBuilder : IntentBuilder<TakePictureIntent>() {
......
}
ちなみにEspresso テストコードをEmulator で実行してみたけど、サムネイル取れんかったので、本当に機能しているかは不明orz
JetBrains さんから便利そうなブラウザ拡張が出てた。
GitHub などのリポジトリページを表示すると、下記画像のように対応するIDE にクローンできるみたい。
欲を言えば、Android Studio も対応してくれると嬉しいなw
Android で外部アプリに対してcontent uri を発行し、それをIntent で投げたんだけど、うまく処理できない……って件を解決できた。
Intent 設定時にaddFrags() でFLAG_GRANT_READ_URI_PERMISSION を指定し、発行したURI に対して権限を付与すれば良かったようだ。
セキュリティの考慮点は下記を確認すると良いかも。
4. 安全にテクノロジーを活用する — Androidアプリのセキュア設計・セキュアコーディングガイド 2019-12-01 ドキュメント
Ionic 3 + Capacitor は気をつけないとTypeScript バージョン違いによるコンパイルエラーになるので、マジ注意w
https://github.com/ionic-team/capacitor/issues/1526
でも、TypeScript 2.9.2 にすると今度はAoT コンパイルできなくなる可能性があるので、素直にIonic 4+ に移行した方が良いかも。
https://twitter.com/shion_engineer/status/1136290878593495040