Android - Default USB MTP for Android 6.0

Google changed the USB protocol for Marshmallow to always default to charge.

The reason for this change because they brought back the ability to make external storage (SD card) become internal storage. Creating a new storage type called "Adoptable Storage".

Originally google removed the ability to swap storages because they viewed it as a huge security vulnerability.

Adoptable storage

In order to achieve your end goal it looks like you might have to compile marshmallow from source. Find the MtpService.java and then with updateDisabledStateLocked() change mMtpDisabled to false.

MtpService.java


The best I found so far is an application named MTPEnabler: http://forum.xda-developers.com/android/apps-games/app-mtp-enbaler-t3263467