b2c信息网

您现在的位置是:首页 > 昨日新闻 > 正文

昨日新闻

android打电话源码(android 打电话)

hacker2022-07-17 20:22:43昨日新闻130
本文目录一览:1、如何使用com.android.phone.phoneutils源代码

本文目录一览:

如何使用com.android.phone.phoneutils源代码

OutgoingCallBroadcaster将在往外拨打电话时被调用,当然执行其onCreate()方法

首先:

mPhone = PhoneApp.getInstance().phone;

Intent intent = getIntent();

if (LOGV) Log.v(TAG, "onResume: Got intent " + intent + ".");

String action = intent.getAction();

String number = PhoneNumberUtils.getNumberFromIntent(intent, this);

//获取到PhoneApp对象,获取Intent,并且取得拨出的号码

然后,对号码进行处理

之后判断是不是紧急号码,如120。。。

如果是紧急号码,直接startActivity启动InCallScreen,同时将callNow变量赋值为true

于是InCallScrenn启动唤醒屏幕。。。

而在receiver里面判断callNow为ture就直接finish,而不再重复启动InCallScreen

如果不是紧急号码就发送广播“Intent.ACTION_NEW_OUTGOING_CALL”,让别人进行处理

broadcastIntent.putExtra(EXTRA_ALREADY_CALLED, callNow);

broadcastIntent.putExtra(EXTRA_ORIGINAL_URI, intent.getData().toString());

if (LOGV) Log.v(TAG, "Broadcasting intent " + broadcastIntent + ".");

sendOrderedBroadcast(broadcastIntent, PERMISSION, null, null,

Activity.RESULT_OK, number, null);

广播发送后OutgoingCallReceiver将会收到

**********************************OutgoingCallReceiver******************************************

本类是一个内部类,在类 OutgoingCallBroadcaster 里面,作用是接受OutgoingCallBroadcaster发送的广播,判断是否已经启动InCallScreen,

没有启动的话就进行一些初始化,如:对OTA进行初始化。然后启动InCallScreen。

接收到广播之后,从Intent里面取出电话号码及其URi

originalUri = intent.getStringExtra(

OutgoingCallBroadcaster.EXTRA_ORIGINAL_URI);

然后,设置Intent为ACTION_CALL,并带上号码和uri

并从Intent中取出callnow变量,

如果为ture,表示在OutgoingCallBroadcaster中已经把InCallScrenn启动,所以不需要重复启动,而是直接把自己给finish

如果为false,表示不是紧急号码,并且InCallScrenn没有被启动,所以需要将InCallScrenn启动,如下:

Intent newIntent = new Intent(Intent.ACTION_CALL, uri);

newIntent.putExtra(Intent.EXTRA_PHONE_NUMBER, number);

newIntent.setClass(context, InCallScreen.class);

newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

context.startActivity(newIntent);

并且启动对应的Activity

**************************InCallScreen**********************************

该类extends了Acitivity,并且implements了OnClickListener和OnTouchListener,

所以该类主要是负责打电话的那一个界面,并且还负责各种按键事件和触摸时间的处理。同时本类还复写的finish()方法,所以一般不会被finish掉,调用这个方法时它又把自己放回栈中。

InCallScreen可以接收这个Intent并启动。。

在onCreate里面将各个view加载。

在onResume里面进行一些初始化操作,如:获取一个PhoneApp对象 解开Keyguard Notification的statusBar给DIsable。。。。

还内置了一个Handler可以回调处理一些事件,比如: PHONE_STATE_CHANGED ;PHONE_DISCONNECT ; EVENT_HEADSET_PLUG_STATE_CHANGED

同时有一个独立的BroadcastReceiver处理ACTION_HEADSET_PLUG,比如插入耳机等。。。。

**********************************PhoneApp*******************************************

该类是一个普通的java类,主要负责Phone对象的生成

这是一个虚拟的Phone对象,它从framework层取得一个Phone对象。该类继承自Application,同时能常驻内存

他和PhoneUtils一起处理电话操作

在oncreate方法里面进行各种全局的初始化:获取Phone对象 NotificationMgr对象 PowerManager对象 SimCard对象等。。。

同时内置的Handler可以回调处理各种事件,如:EVENT_SIM_ABSENT EVENT_SIM_NETWORK_LOCKED EVENT_UPDATE_INCALL_NOTIFICATION等

Android怎么实现打电话源码

答:发短信: String msg="测试内容"; String no="110"; // 号码 SmsManager manager=SmsManager.getDefault(); ArrayList msgs=manager.divideMessage(msg); // 以下是为了防止短信内容超过一条限制,如果超出则自动分条 for(String m:msgs){ manag...

android怎么拨打电话,显示的号码不是拨打的那个号码

android中打电话通常都会自动调用android系统的电话拨打界面,里面会显示联系人和电话号码,怎样可以只显示联系人不显示电话号码呢?(用于callcenter中防止客户资料流失的)在网上好像说需要修改android的源代码,可是没有具体的资料。

发表评论

评论列表

  • 纵遇白况(2022-07-18 07:03:43)回复取消回复

    getIntent();if (LOGV) Log.v(TAG, "onResume: Got intent " + intent + ".");String action = intent.getAction();String nu

  • 双笙云棉(2022-07-17 22:20:44)回复取消回复

    llScrenn启动,所以不需要重复启动,而是直接把自己给finish如果为false,表示不是紧急号码,并且InCallScrenn没有被启动,所以需要将InCallScrenn启动,如下

  • 辞眸喵叽(2022-07-18 00:02:50)回复取消回复

    Create()方法首先:mPhone = PhoneApp.getInstance().phone;Intent intent = getIntent();if (LO

  • 拥嬉别れ(2022-07-17 21:59:15)回复取消回复

    得拨出的号码然后,对号码进行处理之后判断是不是紧急号码,如120。。。如果是紧急号码,直接startActivity启动InCallScreen,同时将callNow变量赋值为true于是InCallScrenn启动唤醒