实体home键像虚拟按键那样有正常功能。横屏通知锁屏不显示通知,所有应用默认不显示通知(不仅仅在锁屏界面),或者指定应用可显示。

实体home键像虚拟按键那样有正常功能:

虚拟按键的底层键值都是2,不过上层键值keycode在这SystemUI//opa/res/layout/home.xml

已经定义了,<com.android.systemui.statusbar.policy.KeyButtonView里面有个属性

systemui:keyCode="3"

而在frameworks下的KeyEvent里面这个3,就是KEYCODE_HOME

实测实体按键home的上层键值122,就是KEYCODE_MOVE_HOME,而这个值在PhoneWindowManager里面就没有定义使用,KEYCODE_HOME这个用到了,

所以思路是,直接在底层就把键值对应的名字改成KEYCODE_HOME

frameworks/base/data/keyboards/Generic.kl

key 102   HOME

注意!在还没改之前,这个值是底层键值,是getevent看到的,而上层键值对应的是原来的MOVE_HOME

所以先用getevent转化十进制查看底层键值再修改名字,那么keycode也会变

Remake不生效,需要./device/droi/pu181_ysf_all2_hw_zl/mtk-kpd.kl 修改

虚拟按键主要是三个res/layout/back.xml:24:    systemui:keyCode="4"

res/layout/recent_apps.xml:24:    systemui:keyCode="187"

res/layout/home.xml:23:    systemui:keyCode="3"

横屏通知锁屏不显示通知,所有应用默认不显示通知(不仅仅在锁屏界面),或者指定应用可显示:

vendor/mediatek/proprietary/packages/apps/SystemUI/src/com/android/systemui/statusbar/phone/NotificationPanelViewController.java

里面有个监听旋转的类OnConfigurationChangedListener

里面一个监听方法onConfigurationChanged

if (newConfig.orientation == Configuration.ORIENTATION_PORTRAIT) {

                          Settings.Secure.putInt(mView.getContext().getContentResolver(),

                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,1);

                  }else if (newConfig.orientation == Configuration.ORIENTATION_LANDSCAPE){

                          Settings.Secure.putInt(mView.getContext().getContentResolver(),

                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,0);

                  }

思路就是横屏时,系统层把通知显示关掉,横屏时再打开。

主要方法是Settings.Secure.putInt(mView.getContext().getContentResolver(),

                Settings.Secure.LOCK_SCREEN_SHOW_NOTIFICATIONS,1);

第一个参数需要获取Context,第三个参数1是打开0是关闭,都是这样的

所有应用默认不显示通知,不仅仅在锁屏界面

override/frameworks/base/services/core/java/com/android/server/pm/PackageManagerService.java

public void systemReady() {

if(mFirstBoot){

        PackageManager packageManager = mContext.getPackageManager();

        List<PackageInfo> packageInfos = packageManager.getInstalledPackages(0);

        try {

            if (packageInfos != null) {

                for (int i = 0; i < packageInfos.size(); i++) {

                    String packName = packageInfos.get(i).packageName;

                    if(packName.equals("com.MobileTornado.Main")){

                        continue;

                    }else{

                        disableAppNotification(packName);

                    }

                    Log.e(TAG, "allPackage: ------------------------------------" + packName);

                }

            }

        } catch (Exception e) {

            e.printStackTrace();

        }

        }

用到的方法

private void disableAppNotification(String packageName){

        //NotificationManager mNotificationManager =(NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);

        android.app.INotificationManager mNotificationManager = android.app.INotificationManager.Stub.asInterface(ServiceManager.getService(Context.NOTIFICATION_SERVICE));

        try {

            int uid = getPackageUid(packageName, 0, UserHandle.USER_SYSTEM);

            Slog.i("yu","-----------------disableAppNotification: " + packageName + ", uid = " + uid);

            mNotificationManager.setNotificationsEnabledForPackage(packageName, uid, false);

        } catch (Exception e) {

            Slog.e("yu", "--------------------disableAppNotification: " + e);

        }

    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Youth King

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值