this workaround is working for me, the location is automatically granted while driver setup.
capabilities.setCapability("autoGrantPermissions", "true");
I see the following in appium log
Running adb with args: ["-P",5037,"-s","XXXXXX","shell","pm","grant","com.testapp.debug","android.permission.ACCESS_COARSE_LOCATION",";","pm","grant",""com.testapp.debug","android.permission.ACCESS_FINE_LOCATION",";","pm","grant","com.testapp.debug","android.permission.RECORD_AUDIO",";","pm","grant",""com.testapp.debug","android.permission.GET_ACCOUNTS",";"]