2020年8月10日月曜日

ACTION_GET_CONTENT で複数の MIME type を指定したいときは EXTRA_MIME_TYPES を使う

画像を ACTION_GET_CONTENT で取りたいけれど、image/* ではなく image/png と image/jpeg だけにしたいという場合は EXTRA_MIME_TYPES を指定します。このとき type には */* を指定しておきます。
  1. val intent = Intent(Intent.ACTION_GET_CONTENT)  
  2.   .setType("*/*")  
  3.   .putExtra(Intent.EXTRA_MIME_TYPES, arrayOf("image/png""image/jpeg"))  
ACTION_OPEN_DOCUMENT でも使えます。


2020年8月9日日曜日

アプリ内から Google Play にレビューを投稿できるようになりました。

In-App Review API は Java/Kotlin のほか、native code と Unity からも使えます。

In-App Review API のガイドラインを確認して利用しましょう。
例えば
  • レビューのUI(ドキュメントではカードと呼んでいる)を出す前に "Do you like the app?" のような意見を聞く質問を出してはいけない。
  • カードに変更を加えたり、上や周りにオーバーレイを出したり、カードを勝手に消してはいけない。
  • 過度に出してはいけない。quotaがあり、超えるとカードが出なくなる。
などがあります。

In-App Review API を使うには Google Play Core Library を追加します。
  1. dependencies {  
  2.     ...  
  3.     implementation "com.google.android.play:core-ktx:1.8.1"  
  4. }  
Review Flow を開始するには、ReviewManager の requestReviewFlow() を呼び出します。requestReviewFlow() の結果が成功だと ReviewInfo が取得できます。取得した ReviewInfo を使って ReviewManager の launchReviewFlow() を呼び出します。
  1. val manager = ReviewManagerFactory.create(context)  
  2.   
  3. ...  
  4.   
  5. private fun startReviewFlow() {  
  6.     manager.requestReviewFlow()  
  7.         .addOnCompleteListener { request ->  
  8.             if (request.isSuccessful) {  
  9.                 val reviewInfo = request.result  
  10.   
  11.                 manager.launchReviewFlow(activity, reviewInfo)  
  12.                     .addOnCompleteListener {  
  13.                         // レビューフローが終了した  
  14.                         // ユーザーがレビューしたのかしてないのか、  
  15.                         // そもそもカードが表示されたのかどうかは取得できない  
  16.                         // アプリの通常フローを進める  
  17.                     }  
  18.             } else {  
  19.                 // なにかしら問題があったということだが、  
  20.                 // 結果によらずアプリの通常フローを続ける  
  21.             }  
  22.         }  
  23. }  
In-App Review API からは、ユーザーがレビューしたのかどうか、レビューのカードが表示されたのかどうかは取得できません。


In-App Review API の挙動をテストするにはアプリが Google Play に公開されている必要がありますが、製品版として公開されている必要はなく、internal test tracks や internal app sharing に公開することでテストできます。

また、Unit Test や Instrumentation Test 用に ReviewManager の Fake が用意されています。
  1. val manager = FakeReviewManager(context)