vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\statusbar\phone\StatusBar.java
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);
}
}
}
};
代码路径 vendor\mediatek\proprietary\packages\apps\SystemUI\src\com\android\systemui\statusbar\phone\StatusBarWindowController.java
增加一个接口,可以控制下拉导航栏
public void setBarVisibility(int visibility) {
mStatusBarView.setVisibility(visibility);
}
代码路径 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);
}
}
}
}
};