如何覆盖默认的通话屏幕?

时间:2016-11-30 12:11:54

标签: android android-studio phone-call

当用户从我的Android应用程序拨打任何号码而非默认来电者屏幕时,我想启动自定义屏幕。

1 个答案:

答案 0 :(得分:1)

一般来说,为了知道如何覆盖任何默认的Activity,首先你需要知道可以启动Activity的Intent的structure

确定意图的结构

  1. 打开Android Monitor(又名Logcat)
  2. 过滤日志以仅显示与字符串" ActivityManager"
  3. 匹配的日志
  4. 启动要覆盖的活动。在您的情况下,启动通话屏幕
  5. 如果可以覆盖活动,您应该看到带有" START ..."的日志条目,复制该条目,以便您不会在日志中丢失它。在我的设备上,此条目是:

    START u0 {act = android.intent.action.CALL dat = tel:xxxxxxxxxxx flg = 0x10000000 cmp = com.android.server.telecom / .CallActivity(has extras)} from uid 10088 on display 0 < / em>的

    此意图由

    组成
    • act - 意图行动
    • dat - 意图数据
    • cmp - 意图组件

    现在您需要检查此Intent是否可以在不指定组件的情况下启动默认拨号程序。

    检查是否可以覆盖默认活动

    1. adb shell
    2. am start -a android.intent.action.CALL -d tel:xxxxxxxxxxx(填写你要测试的号码)
    3. 如果它启动了拨号器,那么,瞧。您应该可以create an IntentFilter为您的应用程序,适当地设置操作和数据。然后,下次用户尝试拨打电话时,它会询问用户他们想要使用哪个应用。