关闭

描述android手机 用户拨打电话(原理)(12593+号码)

608人阅读 评论(0) 收藏 举报
分类:

如果你喜欢请点击:http://huameiai.taobao.com/     http://wd.koudai.com/s/260295144?wfr=cmeiai.taobao.com/ 

谢谢你们的帮助!




描述android手机 用户拨打电话(原理)(12593+号码)


http://blog.sina.com.cn/s/blog_7bc3d84f0100uswx.html



获得手机运营商码

 

呼叫记录有三种类型:

来电:CallLog.Calls.INCOMING_TYPE (常量值:1

外拔:CallLog.Calls.OUTGOING_TYPE(常量值:2

未接:CallLog.Calls.MISSED_TYPE(常量值:3

 

假如我的电话号码是移动的  那么我要打长途 就要在其前面加12593+号码   我们想电话拨号器能自动识别并添上12593

 

的当用户输入号码 点击绿色的拨打电话  实际上也是发送了外拨电话的一个广播  这个广播会传给电话拨号器里面的 接收者

电话拨号器里的接收者 接收到该广播后  就实现了这个电话拨打

 

那么我们希望 广播到达电话拨号器之前 先得到该广播  然后把广播里面用于存放拨打电话号码的参数 改成新的号码

然后把新的号码送给拨号器里的 广播接受者

 

 

如果你是要接受 外拔广播意图 那么 清单的接受者应该是

 

<receiver android:name=".NumberBroadcastReceiver">

           <intent-filter android:priority="1">

              <action android:name="android.intent.action.NEW_OUTGOING_CALL"/> //申请外拨电话广播接受权限 注意这个

           </intent-filter>

</receiver>

 

 

 

 

 

   extends BroadcastReceiver 的类中

public void onReceive(Context context, Intent intent) {

    private static final String OUTGOING_CALL ="android.intent.action.NEW_OUTGOING_CALL";

 

       if(OUTGOING_CALL.equals(intent.getAction())){

           TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);

           String operator = telephonyManager.getSimOperator();//获得经营商  判断是联通还是移动用的

           if("46000".equals(operator) || "46002".equals(operator)){//46000  46002是中国移动的 联通是46001  电信是46003

              String nubmer = getResultData();

              if(!nubmer.startsWith("12593")){

                  nubmer = "12593"+ nubmer;

                  setResultData(nubmer);

              }

           }

else if(…) ………………..//其他意图活动


0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:183536次
    • 积分:2585
    • 等级:
    • 排名:第14789名
    • 原创:37篇
    • 转载:150篇
    • 译文:5篇
    • 评论:14条
    最新评论