shaky-android

by linkedin

linkedin / shaky-android

Shake to send feedback for Android.

135 Stars 42 Forks Last release: over 1 year ago (2.0.2) Apache License 2.0 68 Commits 11 Releases

Available items

No Items, yet!

The developer of this repository has not created any items for sale yet. Need a bug fixed? Help with integration? A different license? Create a request here:

Shaky

Build Status

Shake-to-feedback plugin for Android.

Shaky dialog prompt

Inspired by Google Maps' Shake to feedback and based on Square's seismic.

Download

Download the latest .aar via Maven:

xml
    
      com.linkedin.shaky
      shaky
      2.0.3
    

or Gradle:

    implementation 'com.linkedin.shaky:shaky:2.0.3'

Getting Started

Add the following to your

AndroidManifest.xml
application tag:
    
        
    

Create the corresponding

res/xml/filepaths.xml
resource:
    

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.

In your

Application
subclass:
    public class ShakyApplication extends Application {
        @Override
        public void onCreate() {
            super.onCreate();
            Shaky.with(this, new EmailShakeDelegate("[email protected]"));
        }
    }

For a complete example, see the demo app.

Advanced Usage

Your app can define custom behavior by subclassing

ShakeDelegate
and implementing the
void submit(Activity, FeedbackResult)
method (e.g. to send the data to a custom server endpoint).

In addition, you can implement the

Bundle collectData()
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.

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.