这边在init.rc注册了一个pppd_gprs服务,如下配置:
service pppd_gprs /system/etc/ppp/pppd_call3g.sh
     user root
     group radio cache inet misc
     disabled
我该如何在Android的应用程序中启动它呢?本人对Android纯粹菜菜鸟,诚心求教,忘高手解答!

解决方案 »

  1.   

    没具体关注过系统级Service  , LZ可以看看已有Service的代码 , 看最后怎么提供到getSystemService接口来的。
      

  2.   

    我要做一个3G的拨号程序,所以必须要从Java应用程序中启动和关闭这个服务啊,已有的Server代码太复杂了,像RIL,就像找个简单点的,在java中用Sytem.setProperty("ctl.start","pppd_gprs"),发现没有任何效果.
       后面我就想,能否像adbd那样设置一个property,但是我从Java程序中System.setProperty()设置后,在adb shell中用getprop查看,发现设置的property没有任何改变啊,用toolbox的setprop就可以,难道这两种方法不是同一空间的.迷茫啊!
      

  3.   

    service pppd_gprs /system/etc/ppp/pppd_call3g.sh
      user root
      group radio cache inet misc
      disabled
    on property:persist.service.pppd_gprs.enable=1
        start pppd_gprson property:persist.service.pppd_gprs.enable=0
        stop pppd_gprsSytem.setProperty("persist.service.pppd_gprs.enable","1")
    不知道这样对你的需求是否有用
      

  4.   

    谢谢大家的回复,我先前就是按照4楼的方法做的,不知为什么Sytem.setProperty("persist.service.pppd_gprs.enable","1"),只在当前程序起作用,在shell上用getProprety查看persist.service.pppd_gprs.enable不为1.所以不能启动服务.5楼的方法:
    通过start_service函数.
    这个函数能在Java中调用吗?如何调用,能给我调用示范吗?谢谢了!
      

  5.   

    弱弱的问下,楼主的/system/etc/ppp/pppd_call3g.sh 这个是个脚本吗?以前遇到过是在/bin下面写了个C的服务.
    另外Sytem.setProperty 最终是调用 property_set 怎么会只在"只在当前程序起作用"起作用呢,源码中好象 并没有这方面的控制,
      

  6.   

    System.setProperty和property_set不一样,property_set是运行在系统层的,System.setProperty是Java层用的
      

  7.   

    是的.System.setProperty 最终还是会通过JNI的Native去调用property_set,楼主可以去看下源代码
      

  8.   

    我记得只是一个API函数就可以了,只是不确定是不是5楼的那个。
      

  9.   

    2VNv3qDI

    要顶
    必须顶
    不得不顶
    用尽全力顶
    再加上千斤顶
    总之把它顶到顶
    接着使出葵花宝顶
    就算顶到史前也要顶
    老子看了会用道德经顶
    孔子亲自拜你为师天天顶
    秦始皇站在阿房宫上使劲顶
    汉高祖挥师杀向东罗马为你顶
    吕布抛弃了貂禅而选择了帮你顶
    张三丰见了后用太极拳九式全力顶
    左冷禅召开武林盟主大会商讨如何顶
    西门吹雪从此学会了最强一招剑神一顶
    龙剑飞的如来神掌最后一式改为万佛朝顶
    陆小凤从此再也不管闲事了而专门来为你顶
    四大名捕四面出击看天下还有没有人敢不在顶
    黄飞鸿的宝芝林里从此多了一味药叫做吃了就顶
    霍元甲其实根本就没有死因为他还想要努力帮你顶
    AsE5cWhQHeaJkAsE5cWhAsE5cWh
    工作咯,兼职  http://gongzuolo.com/ 
    2VNv3qDI2VNv3qDIAsE5cWhAsE5cWhAsE5cWh
    看完楼主的帖子,我的心情竟是久久不能平复,正如老子所云:大音希声, 
    大象希形.我现在终于明白我缺乏的是什么了, 
    正是楼主那种对真理的执着追求和楼主那种对理想的艰苦实践所产生的厚重感.面对楼主的帖子 
    ,我震惊得几乎不能动弹了, QHeaJksLAWDKzio
    珠三角 之窗 http://byhat.com/
    l1omoAsE5cWhQHeaJkAsE5cWh
    楼主那种裂纸欲出的大手笔,竟使我忍不住一次次的翻开楼主的帖子,每看一次,赞赏之情就激长数分,
    我总在想,是否有神灵活在它灵秀的外表下,以至能使人三月不知肉味,使人有余音穿梁,三日不绝的感受 
    .楼主,你写得实在是太好了 2VNv3qDI
    City Yet! Jobs,Friends,Trade,Community,gigs 
    http://cyet.net/
    .我唯一能做的,就只有把这个帖子顶上去这件事了 
    l1omoAsE5cWhAsE5cWh2VNv3qDI
      

  10.   

    System.setProperty跟property_set设置我也觉得很奇怪,用System.setProperty设置的属性不会影响到init.rc里的参数,可以用System.getProperies()和toolbox的getprop对比一下就清楚了.
      

  11.   

    init.rc中启动的都是daemon服务,这部分和上层基本上都是用socket通信的(看看zygote rild 等的源代码)。 daemon本身是在机器启动的时候一起启动(init进程解析init rc脚步)的,如果daemon挂了,还会自动重启。因此不存在android的应用程序启动服务的问题,他早就起来等你了。如果你在这个服务的两端将通信做好了,就可以互相工作了。
      

  12.   

    直接在Property_service.c中添加pppd_gprs的权限
      

  13.   

    想问下lz是怎么个调用方式的,昨天用system.setproperty还可以设置呢,但是就是启动不了服务,不知道是哪个参数设置出了问题,请教下