控制导航栏的显示和隐藏、以及下拉控制栏

1、StatusBar控制

vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\statusbar\phone\StatusBar.java

1.1 先去定义一个广播接收器
  protected void registerBroadcastReceiver() {
        IntentFilter filter = new IntentFilter();
        filter.addAction(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
        filter.addAction(Intent.ACTION_SCREEN_OFF);
        //filter.addAction("com.android.cus_install_app");

        filter.addAction(DevicePolicyManager.ACTION_SHOW_DEVICE_MONITORING_DIALOG);
        mBroadcastDispatcher.registerReceiver(mBroadcastReceiver, filter, null, UserHandle.ALL);
        //add
		IntentFilter mRhinofilter = new IntentFilter();       
		mRhinofilter.addAction("com.rhion.action.show.navbar");
        mBroadcastDispatcher.registerReceiver(mRhinoBroadcastReceiver,mRhinofilter, null, UserHandle.ALL );
        //end
    }

现在再写收到了广播应该怎么做

	private final BroadcastReceiver mRhinoBroadcastReceiver = new BroadcastReceiver() {
        @Override
        public void onReceive(Context context, Intent intent) {
            String action = intent.getAction();
           if ("com.rhion.action.show.navbar".equals(action)){
			   //
			   Log.d("wzx","1111111111111111111111123333");
				Boolean isNavbarEnabled = intent.getBooleanExtra("mbg_navbar_enabled", true);
				if(isNavbarEnabled){
					 mStatusBarWindowController.setBarVisibility(View.VISIBLE);
					mNavigationBarController.onDisplayReady(mDisplayId);	  
				}else{
					 mStatusBarWindowController.setBarVisibility(View.GONE);
					mNavigationBarController.onDisplayRemoved(mDisplayId);
				}
            }
        }
    };

2、下拉导航栏控制

代码路径 vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarWindowController.java
增加一个接口,可以控制下拉导航栏

    public void setBarVisibility(int visibility) {
        mStatusBarView.setVisibility(visibility);
    }

PhoneWindowManager.java

代码路径 frameworks\base\services\core\java\com\android\server\policy\PhoneWindowManager.java

导入依赖

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.pm.PackageInstaller;
import android.util.Log;
import static android.content.pm.PackageInstaller.SessionParams.UID_UNKNOWN;
import android.app.PendingIntent;
import android.app.Service;
import android.content.Context;
import android.content.Intent;
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInstaller;
import android.content.pm.PackageManager;
import android.content.pm.parsing.ApkLiteParseUtils;
import android.content.pm.parsing.PackageLite;
import android.content.pm.parsing.result.ParseResult;
import android.content.pm.parsing.result.ParseTypeImpl;
import android.os.IBinder;
import android.os.RemoteException;
import android.util.Log;
import android.net.Uri;

import com.android.internal.content.PackageHelper;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.nio.file.Files;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.TimeUnit;
import android.os.Environment;

定义广播接收器

 filter = new IntentFilter();
        filter.addAction(Intent.ACTION_DREAMING_STARTED);
        filter.addAction(Intent.ACTION_DREAMING_STOPPED);
        context.registerReceiver(mDreamReceiver, filter);

        // register for multiuser-relevant broadcasts
        filter = new IntentFilter(Intent.ACTION_USER_SWITCHED);
        context.registerReceiver(mMultiuserReceiver, filter);
        //add 
	     IntentFilter mRhinoOEMFilter = new IntentFilter();
		mRhinoOEMFilter.addAction(RHINO_ACTION_CONFIG_RM_SYSTEMUI);
		mRhinoOEMFilter.addAction(RHINO_ACTION_CONFIG_RM_BUTTON);
		mContext.registerReceiver(mRhinoOMEReceiver, mRhinoOEMFilter);

然后收到广播之后执行

	public void myBooleanSendBroadcast(String action,String parameters,boolean enabled){
		Intent updateSettingIcon = new Intent(action);
		updateSettingIcon.putExtra(parameters,enabled);					
		mContext.sendBroadcast(updateSettingIcon); 	
	}
  private BroadcastReceiver mRhinoOMEReceiver = new BroadcastReceiver() {
		public void onReceive(Context context, Intent intent) {
			String action = intent.getAction();
			if (RHINO_ACTION_CONFIG_RM_SYSTEMUI.equals(action)) {	
				
				Boolean navbarEnabled = intent.getBooleanExtra("navbar_enabled", true);
			
				if(navbarEnabled){
					boolean isChaned = android.os.SystemProperties.get("persist.sys.navbar.enabled","true").equals("true") ? true : false;
					if(!isChaned){
						android.os.SystemProperties.set("persist.sys.navbar.enabled", "true");
						myBooleanSendBroadcast("com.rhion.action.show.navbar","mbg_navbar_enabled",true);
					}
				}
			}
		}
	};	
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值