The "trick" here is to employ an SMS Receiver which extends Broadcast Receiver
(for example: public class SmsReceiver extends BroadcastReceiver).
The SMS Receiver gains control whenever an Android phone receives an SMS.
I am writing from my experience in writing 2 applications, which can notify person 'a' of the location of person 'b'.
When I want the SMS receiver to perform a specific task I send a certain code (such as a 4-digit number). If the SMS receiver receives this code it is programmed to perform the specific required function, otherwise it terminates and the message is processed as a normal SMS.
The question of sending any remote command to another phone is thus simplified, so that when such a request is received on the callee's phone it is processed on the callee's phone in the normal way.
So if you have the code for enabling/disabling mobile data on your phone, you would install it inside an SMS Receiver and then be able to activate it from any other phone possessing SMS capabilities.
I may add that in my specific application I used GPS and Network/Mobile data location functions, together with Google maps, and when my wife was in Rome recently I sent her an SMS from Jerusalem, and with about 30 seconds received from her phone text giving her current longitude and latitude, Country City and Street, and then - the real bonbon - a Google map giving her exact location at streetname level.
I've written all this because for the last 6 or so months I've been gaining an abundance of information and assistance in problem-solving from this website.
Thanks, Website people!
Avraham Reiss, Jerusalem