展讯系统 Dialer 强力定制

简介: 展讯系统 Dialer 强力定制

1、按下数字物理按键(1~#)跳转拨号 DialpadFragment 并显示数字


packages/apps/Launcher3/src/com/android/launcher3/Launcher.java


@@ -401,7 +401,8 @@ public class Launcher extends BaseDraggingActivity implements LauncherExterns,
         }
         // For handling default keys
-        setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
+        // setDefaultKeyMode(DEFAULT_KEYS_SEARCH_LOCAL);
+        setDefaultKeyMode(DEFAULT_KEYS_DIALER);
         setContentView(mLauncherView);
         getRootView().dispatchInsets();

2、DialpadFragment 界面左半部默认增加通话记录、通讯录菜单


7rsY4I.png


packages/apps/Dialer/java/com/android/dialer/searchfragment/list/NewSearchFragment.java

private List<Integer> getActions() {
    /**UISOC: modify for the bug 1104601 & 1113540 @{*/
    boolean isDialableNumber = false;
    if (query != null) {
      isDialableNumber = PhoneNumberUtils.isGlobalPhoneNumber(query.replace(" ", ""));
    }
    /*@}*/
    boolean nonDialableQueryInRegularSearch = isRegularSearch() && !isDialableNumber;
    if (TextUtils.isEmpty(query) || query.length() == 1 || nonDialableQueryInRegularSearch) {
      //cczheng add for callog contact
      List<Integer> emptyActions = new ArrayList<>();
      emptyActions.clear();
      emptyActions.add(Action.MAKE_VOICE_CALL);//callog
      emptyActions.add(Action.SEND_SMS);//contact
      return emptyActions;//end
      // return Collections.emptyList();
    }
    List<Integer> actions = new ArrayList<>();
    if (!isRegularSearch()) {
      actions.add(Action.CREATE_NEW_CONTACT);
      actions.add(Action.ADD_TO_CONTACT);
    }
    if (CallUtil.isVideoEnabled(getContext())) {
      actions.add(Action.MAKE_VILTE_CALL);
    }
    // if (isRegularSearch() && isDialableNumber) {
      actions.add(Action.MAKE_VOICE_CALL);
    // }
    actions.add(Action.SEND_SMS);
    /*if (CallUtil.isVideoEnabled(getContext())) {
      actions.add(Action.MAKE_VILTE_CALL);
    }*/
    return actions;
  }


packages/apps/Dialer/java/com/android/dialer/searchfragment/list/SearchActionViewHolder.java

  void setAction(@Action int action, int position, String query) {
    //cczheng change 
      case Action.SEND_SMS://contact
        // actionText.setText(R.string.search_shortcut_send_sms_message);
        // actionImage.setImageResource(R.drawable.quantum_ic_message_vd_theme_24);
        actionText.setText(R.string.tab_all_contacts);
        actionImage.setImageResource(R.drawable.quantum_ic_people_vd_theme_24);
        break;
      case Action.MAKE_VOICE_CALL://callhistory
        // actionText.setText(context.getString(R.string.search_shortcut_make_voice_call, query));
        // actionImage.setImageResource(R.drawable.quantum_ic_phone_vd_theme_24);
        actionText.setText(R.string.tab_history);
        actionImage.setImageResource(R.drawable.quantum_ic_history_vd_theme_24);
        break;
  public void onClick(View v) {
   case Action.SEND_SMS:
        /*intent = IntentUtil.getSendSmsIntent(query);
        DialerUtils.startActivityWithErrorToast(context, intent);*/
        intent = IntentUtil.getContactPeopleIntent();
        DialerUtils.startActivityWithErrorToast(context, intent);
        break;
      case Action.MAKE_VOICE_CALL:
        // listener.placeVoiceCall(query, position);
        intent = IntentUtil.getCallHistoryIntent();
        DialerUtils.startActivityWithErrorToast(context, intent);
        break;

packages/apps/Dialer/java/com/android/dialer/util/IntentUtil.java

  //cczheng add
  public static Intent getCallHistoryIntent() {
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.android.dialer",
                "com.android.dialer.app.calllog.CallLogActivity"));
    return intent;
  }
  public static Intent getContactPeopleIntent() {
    Intent intent = new Intent();
    intent.setComponent(new ComponentName("com.android.contacts",
                "com.android.contacts.activities.PeopleActivity"));
    return intent;
  }//end

3、拨号主界面去除底部 NavTabBar 并且默认选中 CALL_LOG 通话记录 Fragment 页面


7rcdv6.png

packages/apps/Dialer/java/com/android/dialer/main/impl/OldMainActivityPeer.java

    int getLastTab() {
      @TabIndex int tabIndex = TabIndex.SPEED_DIAL;
      tabIndex =
          StorageComponent.get(context)
              .unencryptedSharedPrefs()
              .getInt(KEY_LAST_TAB, TabIndex.SPEED_DIAL);
      // If the voicemail tab cannot be shown, default to showing speed dial
      if (tabIndex == TabIndex.VOICEMAIL && !canShowVoicemailTab) {
        // tabIndex = TabIndex.SPEED_DIAL;
        tabIndex = TabIndex.CALL_LOG;//cczheng change default
      }
      return tabIndex;
    }


packages/apps/Dialer/java/com/android/dialer/main/impl/bottomnav/BottomNavBar.java

  public void showVoicemail(boolean showTab) {
    LogUtil.i("OldMainActivityPeer.showVoicemail", "showing Tab:%b", showTab);
    int voicemailpreviousVisibility = voicemail.getVisibility();
    voicemail.setVisibility(showTab ? View.VISIBLE : View.GONE);
    //cczheng add hide buttom navbar
    speedDial.setVisibility(View.GONE);
    callLog.setVisibility(View.GONE);
    contacts.setVisibility(View.GONE);
  //end
    int voicemailcurrentVisibility = voicemail.getVisibility();
    if (voicemailpreviousVisibility != voicemailcurrentVisibility
        && voicemailpreviousVisibility == View.VISIBLE
        && getSelectedTab() == TabIndex.VOICEMAIL) {
      LogUtil.i("OldMainActivityPeer.showVoicemail", "hid VM tab and moved to speed dial tab");
      selectTab(TabIndex.SPEED_DIAL);
    }
  }


3、拨号主界面右上角菜单增加通话记录和快速拨号


packages/apps/Dialer/java/com/android/dialer/main/impl/toolbar/res/menu/main_menu.xml

  <!-- UNISOC:modify for 1100488 @{ -->
  <item
      android:id="@+id/menu_call_history"
      android:title="@string/action_menu_call_history_description"
      app:showAsAction="collapseActionView"/>
  <item
      android:id="@+id/menu_speed_dial"
      android:title="@string/tab_title_speed_dial"
      app:showAsAction="collapseActionView"/>

packages/apps/Dialer/java/com/android/dialer/main/impl/MainSearchController.java

  public boolean onMenuItemClicked(MenuItem menuItem) {
    if (menuItem.getItemId() == R.id.settings) {
      activity.startActivity(new Intent(activity, DialerSettingsActivity.class));
      Logger.get(activity).logScreenView(ScreenEvent.Type.SETTINGS, activity);
      return true;
    } else if (menuItem.getItemId() == R.id.clear_frequents) {
      ClearFrequentsDialog.show(activity.getFragmentManager());
      Logger.get(activity).logScreenView(ScreenEvent.Type.CLEAR_FREQUENTS, activity);
      return true;
    } else if (menuItem.getItemId() == R.id.menu_call_history) {
     /* final Intent intent = new Intent(activity, CallLogActivity.class);
      activity.startActivity(intent);*/
      //cczheng change start
        bottomNav.selectTab(TabIndex.CALL_LOG);
        /* UNISOC: Add for bug1072695. @{ */
    } else if (menuItem.getItemId() == R.id.menu_speed_dial) {
        bottomNav.selectTab(TabIndex.SPEED_DIAL);//end
    }


4、通话界面二次拨号数字键盘菜单错位问题


packages/apps/Dialer/java/com/android/incallui/incall/impl/res/layout/frag_incall_voice.xml

    <com.android.incallui.incall.impl.InCallPaginator
        android:id="@+id/incall_paginator"
        android:layout_width="@dimen/paginator_width"
        android:layout_height="@dimen/paginator_height"
        android:layout_above="@+id/incall_end_call"
        android:layout_centerHorizontal="true"
        android:visibility="gone"/>
    <!--cczheng remove this for incallui DialpadFragment DialpadView smaller bug 
        style="@style/DialpadContainer"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" -->
    <FrameLayout
        android:id="@+id/incall_dialpad_container"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:clipChildren="false"
        android:clipToPadding="false"
        tools:background="@android:color/white"
        tools:visibility="gone"/>


目录
相关文章
|
3月前
|
安全
分享5款在各自领域遥遥领先的软件
今天要向大家介绍的是5款神器级的软件,它们在各自的领域都属于是佼佼者,有兴趣的可以自行搜索下载,觉得好用就点个赞吧。
497 2
分享5款在各自领域遥遥领先的软件
「镁客早报」余承东:苹果硬件比不过华为;英特尔再裁员,或面临重大转折
诺基亚在全球已获30份5G商用合同;雄安新区将率先大规模商用5G,全面布局IPV6。
276 0