1

Androidアプリのクラッシュに「フィードバックを送信」オプションを追加するにはどうすればよいですか?このオプションはGoogle独自のアプリに表示され、ここにはスターバックスの例があります。アプリをクラッシュする際にフィードバックオプションを送信する方法を追加するにはどうすればよいですか?

App has stopped dialog with Send Feedback

プログラムでこのような何かを作成伴うこの質問への非常に古いの回答が多数あります。彼らはこのショーを行うために過度に関わっているようだ。

私は、アプリ全体を試してキャッチすることなくこれを実装する簡単な方法がないことに驚いています。これは簡単に有効にできますか? Google Playストアコンソールでオプションを有効にするか、マニフェストに何かを追加して

AndroidやPlayストアのドキュメントでこれを行う方法に関するデータは見つかりませんでした。

更新:私たちは、ライブラリ

を報告し、当社のクラッシュとしてこの画像をCrashlytics /ファブリックを使用しているは、Android 6.0のデフォルトの動作を示しています。

enter image description here

そして8.0:

enter image description here

答えて

0

私は驚いて、全体のアプリ

の周りにtryキャッチを入れずにこれを実装する簡単な方法はありません

「アプリ全体に試しにキャッチする」という手段はありません。

crash reporting libraries for Androidの幅広い範囲があり、その一部(たとえばACRA)がフィードバックオプションの種類をサポートします。クラッシュレポーターの実装は、アプリケーションのプロセスがクラッシュしたときに不安定な状態になっているので、ややこしいことです。そのため、この目的でライブラリをテストしてデバッグしたのはこのためです。

これを簡単に有効にすることはできますか? Google Playストアコンソールでオプションを有効にするか、マニフェストに何かを追加して

ライブラリは、アプリケーションに追加する際にマニフェストに何かを追加します。

+0

Crashlyticsを使用しています。私はもっ​​と深く見て、このようなオプションを見つけることができるかどうかを見てみましょう。 – TTransmit

+0

@T送信:私はCrashlyticsを使用していませんが、何らかの「クラッシュレポートにコメントを追加する」オプションがあると思います。 – CommonsWare

+0

クラッシュサイクラに関するドキュメントやオプションで何も見つかりません。 Firebaseのドキュメントには何も見つかりません。私は、GoogleのアプリケーションがFirebaseを使用していると推測します。私はACRAを数年で使用しておらず、積極的に維持されていないように見えます。 – TTransmit

0

これを行うためのライブラリがたくさんありますが、あなたが私のようで、このような単純なタスクのための汎用ライブラリのオーバーヘッドが気に入らないのなら、それはかなり簡単です。ここで

は、あなたが軌道に乗るためにいくつかの手順は次のとおりです。

1)をお持ちでない場合)(アプリケーションを拡張するクラスを追加します。

2)OnCreateを使用してThread.setDefaultUncaughtExceptionHandlerを使用して、カスタムUncoughtExceptionHandlerを設定します。

3)カスタムハンドラで、Intent.FLAG_ACTIVITY_NEW_TASKフラグを持つインテントを使用してアクティビティを開始します。このアクティビティの場合、マニフェストにandroid:process=":crash"属性を追加してください(crashは任意の値にすることができます)。このステップでは、新しいアクティビティが別のプロセスで開始されることが確認されます(古いものがクラッシュし、スタックロールバックプロセスで例外が発生するため、これは重要です)。

4)このアクティビティでは、必要な操作を行います。 (クラッシュレポートに必要なUIを表示したり、自分自身に電子メールを送信したりする)。 JavaMailはサイレント電子メールに適しています。

注:UncaughtExceptionHandlerでは、クラッシュのスレッドと例外が発生します。スタックトレースを抽出するには、
final StringWriter stackTrace = new StringWriter(); exception.printStackTrace(new PrintWriter(stackTrace)); を必要とする場合はスレッド名を抽出し、インテントのバンドルを使用してアクティビティに送信します。

これは、Androidプラットフォームは、あなたのためだけにこれを行います

+0

'Application#onCreate()'を使うことは、すべてのシナリオ(例えば、 'ContentProvider'のクラッシュ)では動作しません。電子メールを送信するには、SMTPアカウント名とパスワードを焼く必要があります。これは簡単に抽出され、スパム送信に使用されます。 – CommonsWare

+0

@CommonsWareそうです。私の場合、私は自分自身のSMTPサーバーを持っており、ContentProviderのクラッシュ報告は必要ありません。しかし、将来必要があれば追加するのは難しくないと確信しています。 – Vlad

1

お役に立てば幸いです。追加のコードを追加する必要はありません。あなたのアプリから例外を投げてみてください。あなたはこれを見るべきです。

あなたはplaystoreにアプリを公開すると、「フィードバックを送信」するためのオプションが表示されますhttps://android-developers.googleblog.com/2010/05/google-feedback-for-android.html

を参照してください。私はあなたがそれを見ることができないと思うあなたがテストしているアプリは、プレイストアから直接ダウンロードされていないアプリのバージョンです(例えば、デバッグキーストアで署名されたもの)。

+0

そのブログ投稿は7歳半です。私は最近のデバイスで動作のイメージを追加しました。 – TTransmit

+0

この回答は正しいです! @Tトランスミッションアプリをプレイストアに公開すると、「フィードバックを送る」オプションが表示されます。あなたがテストしているアプリは、プレイストアから直接ダウンロードされていないアプリのバージョンなので、あなたはそれを見ることができないと思う。 – garnet

+0

これは、Playストアで1年間働いていたアプリでは当てはまりません。 – TTransmit

0

FabricとそのCrashlyticsプラットフォームを使用するだけで、ユーザーの入力を必要とせずに検出されたクラッシュにフラグが立てられます。クラッシュが検出されたときに自動的に通知され、スタックトレースやバージョン管理などの特定の問題が識別されます。これは、プラットフォームに結びついた他の多くの便利な機能に加えて、Firebaseチームにも参加しており、今後数週間/数ヶ月にわたり続きます。私はこの数か月前からこのプラットフォームを使用して25個のアプリケーションを分析し、発生した問題を特定して修正することが非常に効果的であることを発見しました。

関連する問題