直接上代码了。就是增加home,back,recent控制接口。参考某个大佬的修改,自己增加到android 11.0上面去了

做法就是 隐藏具体的按钮,来实现控制。

 

diff --git a/device/qcom/qssi/system.prop b/device/qcom/qssi/system.prop
index 75b4fcdbd0..ba732ed1eb 100755
--- a/device/qcom/qssi/system.prop
+++ b/device/qcom/qssi/system.prop
@@ -84,6 +84,7 @@ persist.debug.wfd.enable=1
 ##property to choose between virtual/external wfd display
 persist.sys.wfd.virtual=0
 
+persist.sys.nvbshow=0
 
 #property to enable HWC for VDS
 debug.sf.enable_hwc_vds=1
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
old mode 100644
new mode 100755
index 1eab427b41..16b513c21e
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/NavigationBarView.java
@@ -86,6 +86,8 @@ import java.io.FileDescriptor;
 import java.io.PrintWriter;
 import java.util.function.Consumer;
 
+import android.provider.Settings;//oudelin add
+
 public class NavigationBarView extends FrameLayout implements
         NavigationModeController.ModeChangedListener {
     final static boolean DEBUG = false;
@@ -709,8 +711,29 @@ public class NavigationBarView extends FrameLayout implements
         getHomeButton().setVisibility(disableHome       ? View.INVISIBLE : View.VISIBLE);
         getRecentsButton().setVisibility(disableRecent  ? View.INVISIBLE : View.VISIBLE);
         getHomeHandle().setVisibility(disableHomeHandle ? View.INVISIBLE : View.VISIBLE);
+
+		invalidButtonVisibility();
+
     }
 
+    public void invalidButtonVisibility(){//oudelin add
+        //20191211  add recent KeyButton  visibility  invisible
+		int home_status = Settings.System.getInt(mContext.getContentResolver(), "pwm_home", 1);
+		int back_status = Settings.System.getInt(mContext.getContentResolver(), "NV_BACK", 1);
+		int recent_status = Settings.System.getInt(mContext.getContentResolver(), "NV_RECENT", 1);
+		//Log.d(TAG, "invalidButtonVisibility(): home_status=" + home_status  + "   back_status="+back_status +"   recent_status  = " +recent_status);
+
+		boolean ishome = (home_status ==1);
+		boolean isback = (back_status ==1);
+		boolean isrecent = (recent_status ==1);
+
+        getBackButton().setVisibility( isback     ? View.VISIBLE : View.INVISIBLE );
+        getHomeButton().setVisibility( ishome     ? View.VISIBLE : View.INVISIBLE );
+        getRecentsButton().setVisibility(isrecent ? View.VISIBLE : View.INVISIBLE );
+        //20191211  add recent KeyButton  visibility  invisible
+     }
+
+
     @VisibleForTesting
     boolean isRecentsButtonDisabled() {
         return mUseCarModeUi || !isOverviewEnabled()
diff --git a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
index 8b08cb732e..d7d4ecbd90 100755
--- a/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
+++ b/frameworks/base/packages/SystemUI/src/com/android/systemui/statusbar/phone/StatusBar.java
@@ -265,7 +265,7 @@ public class StatusBar extends SystemUI implements DemoMode,
 
     public static final boolean DEBUG_WINDOW_STATE = false;
 
-	private static final String OP_BUTTON = "cc.intent.systemui.SHOW_NAVIGATION_BUTTON";//oudelin add status bar
+	private static final String SHOW_NV_BUTTON = "com.chengwei.SHOW_NAVIGATION_BUTTON";//oudelin add status bar
     private static final String SHOW_NAVIGATION = "com.chengwei.NavBar_ENABLE";
     private static final String HIDE_NAVIGATION = "com.chengwei.NavBar_DISABLED";
     // additional instrumentation for testing purposes; intended to be left on during development
@@ -1287,6 +1287,7 @@ public class StatusBar extends SystemUI implements DemoMode,
         filter.addAction(DevicePolicyManager.ACTION_SHOW_DEVICE_MONITORING_DIALOG);
 		filter.addAction(SHOW_NAVIGATION);//oudelin add status bar
 		filter.addAction(HIDE_NAVIGATION);//oudelin add status bar
+		filter.addAction(SHOW_NV_BUTTON );//oudelin add status bar
         mBroadcastDispatcher.registerReceiver(mBroadcastReceiver, filter, null, UserHandle.ALL);
     }
 
@@ -2796,6 +2797,11 @@ public class StatusBar extends SystemUI implements DemoMode,
                     if (mNavigationBarView != null) return;
                         createNavigationBar(result);
 			}
+			else if (SHOW_NV_BUTTON.equals(action)) {
+                Log.e("StatusBar", "SHOW_NV_BUTTON : " + action);
+                    NavigationBarFragment mNavigationBar = mNavigationBarController.getDefaultNavigationBarFragment();
+                    if (mNavigationBar != null) mNavigationBar.notifyNavigationBarScreenOn();
+			}
         }
     };
 

 

 

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐