拨出电话流程:
1 在系统源码这个路径下/packages/apps/Phone//android/phone/
android:process=""说明此应用程序运行在acore进程中。DialtactsActivity的intent-filter的action属性设置为main,catelog属性设置为launcher,所以此activity能出现, 首先启动的就是这个activity在主菜单中,并且是点击此应用程序的第一个界面。dialtactsactivity包含四个tab,分别由TwelveKeyDialer、RecentCallsListActivity,两个activity-alias DialtactsContactsEntryActivity和DialtactsFavoritesEntryActivity分别表示联系人和收藏tab,但是正真的联系人列表和收藏是由ContactsListActivity负责。
2
进入TwelveKeyDialer OnClick方法,按住的按钮id为: ,执行
placecall()
Intent intent = new Intent(,
("tel", number, null));
();
startActivity(intent);
3、
,通过查找知道了packegs/ activity-alias设置了intent-filter,所以需要找到其targetactivity为OutgoingCallBroadcaster。所以进入OutgoingCallBroadcaster的
onCreate()
//(this, ); startActivity(intent);
Intent broadcastIntent = new Intent();
if (number != null) (, number);
(EXTRA_ALREADY_CALLED, callNow);
(EXTRA_ORIGINAL_URI, ().toString());
if (LOGV) (TAG, "Broadcasting intent " + broadcastIntent + ".");
sendOrderedBroadcast(broadcastIntent, PERMISSION, null, null,
, number, null);
4、,通过查找知道了packegs/phone
Receiver接收此intent消息。找到OutgoingCallReceiver,执行
onReceive()函数
Intent newIntent = new Intent(, uri);
(, number);
(context, );
(
android通话流程浅析RIL层 来自淘豆网m.daumloan.com转载请标明出处.