前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

トラブルシューティング

Android 10以降でアプリシェア時にEXTRA_INITIAL_INTENTSが機能しない

課題 コンテンツのシェア機能利用時に Intent.createChooser したIntentに対し、EXTRA_INITIAL_INTENTS で ターゲットアプリごとに特別にカスタマイズしたLabeledIntentを渡していたが、Android10端末でシェア対象のアプリが数件しか表示されなくなった。 原…

Play Install Referrerをアップデートすると追加のパーミッションが要求されることがある

追記 この問題はInstall Referrerの 1.1.2 で解消されたらしい。まだ未確認だけどもう上げても大丈夫そう。 stackoverflow.com 課題 アプリをリリースしようとしたところ、 READ_PHONE_STATE が追加パーミッションとして要求されますと警告が出た。 原因 Pla…

WorkManager.getInstanceでIllegalStateException

課題 一部の端末(例えば Zenfone 3など) でアプリが起動しないという事象が発生している。スタックトレースを見るとWokrManagerのgetInstanceするところでクラッシュしていた。 Caused by: java.lang.IllegalStateException: at androidx.work.impl.WorkMan…

setProguardSeedsConsumerメソッドが見つからない

問題 Android Studioから端末にアプリをインストールしようとしたところ以下のエラーが発生。 Unable to find method 'com.android.tools.r8.CompatProguardCommandBuilder.setProguardSeedsConsumer 原因 build.gradle にあるcom.android.tools.r8の設定が…

Android 3.6でビルドエラー

課題 Android3.6がβ版に昇格していたのでアップデートして起動したところ、Gradleのアップデート案内が通知されたので更新したらビルドが通らなくなった。 Gradle Pluginのバージョンを上げたのが原因らしい。 対応 とりあえず app/build.gradle の設定を順…

onActivityResultの呼ばれるタイミングとFragmentについて

課題 Fragment.onCreateViewでViewを生成しているが、onActivityResult内でそのViewを使用しようとした際にエラーになるケースがある。 原因 通常Fragment.onActivityResultはActivity.onStart前に実行され、それまでにはFragment.onCreateViewは既に実行さ…

AppBarLayout内のViewのVisibilityを変更したらlayout_scrollFlags="snap" が無視された話

タイトルがイケてないが他に短い表現も思いつかなかったのでとりあえず。 課題 AppBarLayout内に3つのViewを配置。それぞれのapp:layout_scrollFlagsは上から順に以下の通り app:layout_scrollFlags="scroll" app:layout_scrollFlags="scroll" app:layout_sc…

Firebase Invitesを使う [Android]

そしてDeprecatedへ Firebaseのサポートからメールが来ていたので報告していたバグが直ったかなーと思ったら Deprecated の案内だった。 https://firebase.google.com/docs/invites/deprecation 今後は普通のACTION_SENDのシェアと Dynamic Link 使えとのこ…

Target API levelを28にした際に遭遇したエラー

Target API level 28にしたところ、Essential Phoneで2つのエラーに遭遇した。 Google Mapが落ちる NoClassDefFoundError: Failed resolution of: Lorg/apache/http/ProtocolVersion; inside of com.google.android.gms 対応 AndroidManifest.xmlに以下の記…

FLAG_ACTIVITY_REORDER_TO_FRONTのバグについて

BackStack上にあるActivityを再作成することなく再利用したい場合に、FLAG_ACTIVITY_REORDER_TO_FRONT を使うことで可能となるが、2つのバグがあって採用できずにいる。1つは解決済みだがもう一方は現在も発生する。 RootViewではないのにバックボタン押下…

Gradle 4.10とFirebaseについて

2018/11/12追記 Android Studiio 3.3 beta3 firebase-core:16.0.5 firebase-perf:16.2.0 distributionUrl=https\://services.gradle.org/distributions/gradle-4.10.2-all.zip の組み合わせで上手く動いた。なのでgradle-4.10.2で現在は問題ない。 以下の記…

Android Support Library to v23でApache HTTP Client が削除されている

課題 Android Support Library to v23でorg.apache.httpパッケージが削除されてしまい、コンパイルエラーになる 対策 org.apache.http.client.HttpClientをはじめとするhttpClient系のクラスは以前からdeprecatedとなっていたが、Support Library v23でコー…

Unable to bind views forをくらう

課題 ButterKnifeを使ってViewHolderのbindを行ったところ、RuntimeExceptionが発生した。 java.lang.RuntimeException: Unable to bind views for $パッケージ名 at butterknife.ButterKnife.bind(ButterKnife.java:322) at butterknife.ButterKnife.bind(B…

SwipeRefreshLayoutのsetRefreshingが表示されない

課題 SwipeRefreshLayoutを使っているが、初期表示のタイミングでsetRefreshing(true)としてもローディングアニメーションが表示されない。 対応 Message queueを使用して処理の実行タイミングを遅らせる。 private SwipeRefreshLayout mSwipeRefreshLayout;…

SwipeRefreshLayoutとRecyclerViewを同時に使用すると挙動がおかしくなる場合の対策

課題 SwipeRefreshLayoutとRecyclerView, GridView, ListViewを同時に使用した際、リストの先頭まで戻らないうちにスワイプリフレッシュが実行されてしまう。 対策 参考のURLを元に制御する。 RecyclerView#setOnScrollListenerは既にDeprecatedとなっている…