An open API service indexing awesome lists of open source software.

https://github.com/linkedin/shaky-android

Shake to send feedback for Android.
https://github.com/linkedin/shaky-android

android android-library feedback linkedin

Last synced: about 2 months ago
JSON representation

Shake to send feedback for Android.

Awesome Lists containing this project

README

          

# Shaky
[![Build Status](https://img.shields.io/github/workflow/status/linkedin/shaky-android/Merge%20checks)](https://img.shields.io/github/workflow/status/linkedin/shaky-android/Merge%20checks)

Shake-to-feedback plugin for Android.

Shaky dialog prompt

Inspired by Google Maps' Shake to feedback and based on Square's
[seismic](https://github.com/square/seismic).

## Download

Download the latest .aar via Maven:
```xml

com.linkedin.shaky
shaky
3.0.13

```

or Gradle:
```
implementation 'com.linkedin.shaky:shaky:3.0.13'
```

## Getting Started

Add the following to your `AndroidManifest.xml` application tag:

```xml



```

Create the corresponding `res/xml/filepaths.xml` resource:

```xml

```
This allows files captured by Shaky to be shared with external apps. In this case, whatever app
picks up the email Intent. Note: you only need these xml permissions to share files with external apps. For more information see
[FileProvider](https://developer.android.com/reference/android/support/v4/content/FileProvider.html).

In your `Application` subclass:

```java
public class ShakyApplication extends Application {
@Override
public void onCreate() {
super.onCreate();
Shaky.with(this, new EmailShakeDelegate("hello@world.com"));
}
}
```

For a complete example, see the [demo app](shaky-sample/src/main).

## Advanced Usage

Your app can define custom behavior by subclassing
[`ShakeDelegate`](shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java)
and implementing the
[`void submit(Activity, FeedbackResult)`](shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java#L49)
method (e.g. to send the data to a custom server endpoint).

In addition, you can implement the
[`Bundle collectData()`](shaky/src/main/java/com/linkedin/android/shaky/ShakeDelegate.java#L42)
to collect extra app data including device logs, user data, etc. You will also need to handle how to send the extra data collected in your `submit` method.

If you want to programmatically trigger the feedback collection flow, rather than listening for shake events, you can call `Shaky#startFeedbackFlow()` on the
object returned by `Shaky.with()`. See the demo app for a full example of how to do this.

## Snapshots

You can use snapshot builds to test the latest unreleased changes. A new snapshot is published
after every merge to the main branch by the [Deploy Snapshot Github Action workflow](.github/workflows/deploy-snapshot.yml).

Just add the Sonatype snapshot repository to your Gradle scripts:
```gradle
repositories {
maven {
url "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
```

You can find the latest snapshot version to use in the [gradle.properties](gradle.properties) file.