I am aware of so many users wanting all HushSMS features for their devices even if their ROM does not provide the API. Well, the wait is over…if you’re willing to switch to a CM based ROM.
(INFO: If you have access to the ROM signing keys for the ROM you use, you can simply unsingn the HushSMS-ROOT.apk and resign it with the singning keys from your ROM and everything should be fine. At keast in theory as I have not tried this way)
Why only CM?
Short answer: Because the app has to be a system app and the signing keys for CM are public.
Long answer: The sendRawPdu API has been removed since ages and only some devices like HTC with Sense still have it available. There is still one class that has this API method available. It’s the SMSDispatcher class. Unfortunately this class is hidden and internal making it only available to system apps. To become a system app, the app in question has to be signed with the manufacturers key and need to be installed in the /system/app path. This key is only available for CM and obviously not for original ROMs like from Samsung, LG or HTC.
HushSMS ROOT Edition only supports three types of messages. To be exact these are the ones that are missing in the market version on devices which do not support the above mentioned API method. Why not all message types you ask? Well, HushSMS ROOT Edition needs to use the following in the Manifest to function properly:
This is necessary to access the SMSDispatcher. Unfortunately the com.android.phone UID is not allowed to use the permission
android.permission.SEND_SMS because it has been set with the
enforceCallingPermission instead of
enforceCallingOrSelfPermission in the IccSmsInterfaceManager class but this is needed to use the sendData API method. Because of this the permission requested by HushSMS ROOT Edition is ignored. So why the hell am I not reflecting this method from the SMSDispatcher also? Because it is declared as an abstract and cannot be reflected.
As you see above I really tried the best to get this working as comfortable as possible, but I am limited to what the OS allows me to do with it’s APIs.
So how do you install this app on your shiny CM powered device now?
I made a post over at XDA dev which I will c&p here for simplicities sake.
- Make sure you have installed the official play store version. HushSMS ROOT Edition will not work without the official version installed.
- Download HushSMS-ROOT.apk from here
- Copy it to your PC/MAC
- Connect your phone via USB
- Open a console and change to the dir where you saved the file
- Type “adb root” (without the quotes of course)
- Then type “adb remount”
- Then type “adb push HushSMS-ROOT.apk /system/app/”
After that you should be able to start the app right from your drawer. If you can’t see it just reboot your device.
You will now be able to send the following message types:
- Class 0 (Flash SMS)
- Type 0 (Silent Ping)
- Message Waiting Indicator for Voice Messages activation and deactivation messages
If something goes wrong, feel free to contact me. I’m always willing to help and fix things as soon as I get a chance.
PS: If you can open the app but nothing happens if you try to send a message double check that you have the official play store version of HushSMS installed.