You need the Android SDK, you will use python SL4A within thecell.
Create a class call AndroidSMS that will verify if the connection is wifi or usb, then validates the mobile number and send the message to the phone.
If the connection is wifi you need to a port number and the host to stablish connection with cell phone.
If the connection is usb you need to a port number only.
You must have the android module in the directory where you execute the script.
The Android SDK can be downloaded at this link.
Android module for remote execution on this link.
How to make Android remote control is explained in this link.
The code for sending text messages:
#!/usr/bin/env python
# -*- coding: utf-8 -*-
#Send Message, from Linux in Android mobile.
#Author: Ernesto Crespo
#Email:ecrespo@gmail.com
#License: GPLv3
#Version:0.4
#Import android,sys,re and getstatusoutput
import android,sys,re
from commands import getstatusoutput
#Create a Class AndroidSMS
class AndroidSMS:
def __init__(self,conn,port,host="192.168.0.100"):
"""conn: usb or wifi
port: port number of SL4A server.
host: IP number of cell phone
#path to adb program
self.__adb = "/home/ernesto/android-sdk-linux_x86/platform-tools/adb"
self.__port = port
self.__host = host
self.__conn = conn
def __CheckNumber__(self,numCell):
"""check if numCell has 11 digits, and check valid provider
"""
if len(numCell) == 11 and ((re.search("041[2|4|6]\d\d\d\d\d\d\d",numCell)) or (re.search("042[4|6]\d\d\d\d\d\d\d",numCell))) :
# return 1 if a valid provider and valid number
return 1
else:
return 0
def __ConfigAndroid__(self):
"""Config conecction Linux to Android.
"""
# kill SL4A server
getstatusoutput("%s kill-server" %self.__adb)
#clean AP_PORT and AP_HOST variables
getstatusoutput("export AP_PORT=\"\"")
getstatusoutput("export AP_HOST=\"\"")
#start SL4A server
r = getstatusoutput("%s devices" %self.__adb)
if r[0] <> 0:
print "Problems with cell phone connection"
sys.exit
else:
if self.__conn == "usb":
#check id device
if r[1].split("\n")[1] == "":
print "No cell phone"
sys.exit
#Cell phone work
# port forward in SL4A server
getstatusoutput("%s forward tcp:9999 tcp:%s" %(self.__adb,self.__port))
if self.__conn == "wifi":
#Set AP_PORT and AP_HOST
#if wifi
getstatusoutput("export AP_PORT=%s" %self.__port)
getstatusoutput("export AP_HOST=%s" %self.__host)
elif self.__conn == "usb":
#Set AP_PORT
#if usb
getstatusoutput("export AP_PORT=\"9999\"")
print "Cell phone work"
def SendMessage(self,number,message):
"""SendMessage: Send Message to cell phone
"""
if self.__CheckNumber__(number) == 0:
print "No valid Number"
sys.exit
#Set object Android if connection wifi or usb
self.__ConfigAndroid__()
#wifi: set host and port
#usb: set port only
if self.__conn == "wifi":
droid = android.Android((self.__host,self.__port))
elif self.__conn == "usb":
droid = android.Android(("127.0.0.1",9999))
#Send Message
droid.smsSend(number,message)
if __name__ == '__main__':
"""Sets values: number, message, conn, port and host
"""
if len(sys.argv) == 6:
number = sys.argv[1]
message = sys.argv[2]
conn = sys.argv[3]
port = sys.argv[4]
host = sys.argv[5]
elif len(sys.argv) == 5:
number = sys.argv[1]
message = sys.argv[2]
conn = sys.argv[3]
port = sys.argv[4]
host = ""
else:
print "Error"
sys.exit
#Set androidsms object
androidsms = AndroidSMS(conn,port,host)
#Send Message
androidsms.SendMessage(number,message)
Testing the program:- Wifi connection: python message.py 0xxyyyzzww "test1" wifi 47529 "192.168.0.100"
- USB connection: python message.py 0xxyyyzzww "test2" usb 43421
Shown in Figure test messages: