Instabug, is it possible to deactivate the shake for feedback, if there is no internet access?

2.6k Views Asked by At

I have a networkStateReceiver, that checks if I have internet or not. If I do, I reinitiate instabug, if not, I want to deactivate. How can I do that? I tried just setting it as null, but it doesn't work.

if(haveConnectedMobile || haveConnectedWifi){
            //TODO will need to make a queue, and go through all that queue
            PSLocationCenter.getInstance().initInstabug();
        }else{
            PSLocationCenter.getInstance().instabug = null;
        }

This is my init:

public void initInstabug() {
    String[] feedbackArray = getResources().getStringArray(R.array.feedback);
    String randomStr = feedbackArray[new Random().nextInt(feedbackArray.length)];
    Instabug.DEBUG = true;
    instabug = Instabug.initialize(this)
            .setAnnotationActivityClass(InstabugAnnotationActivity.class)
            .setShowIntroDialog(true, PSTimelineActivity.class)
            .enableEmailField(true, false)
            .setEnableOverflowMenuItem(true)
            .setDebugEnabled(true)
            .setCommentRequired(true)
            .setPostFeedbackMessage(randomStr)
            .setPostBugReportMessage(randomStr) //TODO will be the post report message, random from array
            .setCommentFieldHint("Please describe what went wrong")
            .setPreSendingRunnable(new Runnable() {
                @Override
                public void run() {
                    String[] files = new String[2];
                    files[0] = Environment.getExternalStorageDirectory() + "/Passenger/passenger_log.txt";
                    files[1] = Environment.getExternalStorageDirectory() + "/Passenger/passenger_log2.txt";
                    Compress compress = new Compress(files, Environment.getExternalStorageDirectory() + "/Passenger/log.zip");
                    compress.zip(new CrudStateCallback() {
                        @Override
                        public void onResponse(String string) {
                            Log.i("", "ended making the archive");
                        }
                    });
                }
            })
            .attachFileAtLocation(Environment.getExternalStorageDirectory() + "/Passenger/log.zip");
}
2

There are 2 best solutions below

4
Hassan Ibraheem On BEST ANSWER

You can use this code to disable Instabug automatic invocation:

Instabug.getInstance().setInvocationEvent(IBGInvocationEvent.IBGInvocationEventNone)

This way it won't be invoked automatically. This will only affect the next Activity though (not the current one). You may force to stop and restart all listeners by calling onPause and onResume on the current Activity. (We may address that soon though, so that such changes are applied on the currently running Activity).

Don't forget to also enable the shake invocation event when internet access is restored.

Please keep in mind that Instabug SDK already caches all reports and will re-attempt to send them on next app launch until they're uploaded successfully.

0
J.Doe On

Just wanted to post the updated answer.

The newer SDK has changed the name and now you can disable it by the following code:

Instabug.changeInvocationEvent(InstabugInvocationEvent.NONE)

Notice, if you want to disable it for entire application, just call this method in your Application class