利用ndk c/c++ 实现android短信部分功能
[问题点数:20分]
楼主
发表于: 2011-07-26 09:22:44
小弟最近在研究android短信部分的代码,android的短信功能用java语言很容易实现,我现在想把短信部分的功能完全用c/c++来实现,通过查看android的源码知道,各种短信请求是通过往RIL.java中的socket中写入相关数据实现的。于是我的想法是在上层用c建立一个名叫rild的scoket,并往这个socket里面写入数据长度和数据内容,这样下面的rild守护进程会自动读取socket中的内容,并做出相关的处理,来达到发送短信的目的。不知道这样的想法可行性大不,有人做过相关方面的吗,希望各位大侠能给予帮助。
int sockfd=socket(AF_LOCAL, SOCK_STREAM, 0); int err=socket_local_client_connect(sockfd,SOCKET_NAME_RIL,ANDROID_SOCKET_NAMESPACE_RESERVED,SOCK_STREAM); int anSms[] = {0x19, 0x50, 0x2, 0xFFFFFFFF, 0x1E, 0x310030, 0x300030, 0x340030, 0x310038, 0x350035, 0x350036,0x300030,0x300030,0x360030,0x380063,0x320033,0x620039, 0x640066,0x650030,0x310030,0x0};//RIL.jva中的byte数组序列化后的数据形式,这里直接给一定值 char szSmsLen[4] = {0}; szSmsLen[2] = (sizeof(anSms) / 256); szSmsLen[3] = (sizeof(anSms) % 256); send(sockfd, szSmsLen, sizeof(szSmsLen)); send(sockfd, anSms, sizeof(anSms)); close(sockfd); 发送到socket的程序大概就是这样的,运行在android模拟器上面显示的是send成功了,但是另一个模拟器根本就没收到任何信息,不知道这样做能不能达到发送短信的目的,急求各位高手帮助,谢谢。
name="google_ads_iframe_/8456/IDG.CN_B2B_csdn.net_0" width="728" height="90" title="3rd party ad content" id="google_ads_iframe_/8456/IDG.CN_B2B_csdn.net_0" src="javascript:" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border: 0px currentColor; border-image: none; vertical-align: bottom;">
name="google_ads_iframe_/8456/IDG.CN_B2B_csdn.net_0__hidden__" width="0" height="0" title="" id="google_ads_iframe_/8456/IDG.CN_B2B_csdn.net_0__hidden__" src="javascript:" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" style="border: 0px currentColor; border-image: none; vertical-align: bottom; display: none; visibility: hidden;">
|
|
#1 得分:0
回复于: 2011-07-26 12:32:59
额,NDK接触比较少。。帮你顶一下~~~~
|
|
#2 得分:0
回复于: 2011-07-26 16:06:53
我也想学习NDK,不知道如何 学起,我都不知道如何 跑一个C程序在ANDROID上,JAVA的到是会
|
#3 得分:0
回复于: 2011-07-26 16:37:13
我也在看ndk,帮顶~
| |
|
#4 得分:0
回复于: 2011-07-26 20:30:46
楼主绑定本机的iP多少,另一个模拟器的IP指定没?
5554 5556这些肯定不行的!! 其实可以不用发送到另一个模拟器!可以模拟器想PC发试试!! |
#5 得分:0
回复于: 2011-07-27 09:51:07
4楼 说的是socket间AF_net类型的通信,需要指定ip和端口号。这里使用的是AF_Local类型,是不需要指定ip地址和端口号的。两个模拟器间发短信是可以实现的,在java代码中sendtextmessage()函数的目标手机号码指定为5554或者5556就可以了。我也很想知道怎么通过往rild socket中写入请求和相关数据达到发送短信的目的。
| |
#6 得分:0
回复于: 2011-07-27 13:56:08
NDK现在很火了是不是?
|