展讯系统 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"/>


目录
相关文章
|
前端开发 JavaScript 应用服务中间件
VUE3(十八)vue 路由history 模式去掉 URL 中的 # (nginx)
这部分内容比较少。其实更多的是参考一下vue-router4的官方文档就好。 但是,去掉#之后的路由在配合php框架使用的时候可能会有问题,就是这个链接不知道该去后端还是去前端的路由。
1330 0
VUE3(十八)vue 路由history 模式去掉 URL 中的 # (nginx)
|
安全 Java Shell
Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx
Android发送广播时报错:Sending non-protected broadcast xxxxxxx from system xxxxxxxxxx
1828 0
|
8月前
|
存储 供应链 安全
区块链在物流管理中的应用:让货物管理变得更智能
区块链在物流管理中的应用:让货物管理变得更智能
869 15
|
XML Android开发 数据格式
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
本文通过案例分析了在Android中当两个Activity都设置了`android.intent.category.LAUNCHER`类别时,会导致它们同时在应用启动器的"所有应用"页面显示为不同的启动入口。
377 2
android中两个Activity同时设定了intent-filter的category为android.intent.category.LAUNCHER,会发生什么情况?
|
Android开发
解决android apk安装后出现2个相同的应用图标
解决android apk安装后出现2个相同的应用图标
783 2
|
存储 JavaScript 前端开发
vue在页面使用Vue.prototype全局变量
【6月更文挑战第3天】Vue.prototype 是 Vue 实例的原型对象,用于添加全局属性和方法。通过修改 Vue.prototype,所有 Vue 实例都能访问这些属性和方法。例如,可在 mai
470 1
|
存储 Java Shell
Android系统 实现低内存白名单防LMK原理分析
Android系统 实现低内存白名单防LMK原理分析
1023 0
|
缓存 开发工具 Android开发
Launcher3 一键改变Icon Shape 原理浅析
Launcher3 一键改变Icon Shape 原理浅析
477 0
|
Android开发
Android 支持 ap6236 wifi 模块补丁
Android 支持 ap6236 wifi 模块补丁
294 0