开机动画半屏、权限管理流程、hasSystemFeature

leadcore Android4.4

1.平板开机时开机动画半屏播放,最后一帧全屏显示,关机动画正常。

 原因:屏幕surfaceflinger 默认没转过来,android起来后才转。

 解决:在DisplayDevice.cpp内的setProjection函数里修改

    if (!frame.isValid()) {
        // the destination frame can be invalid if it has never been set,
        // in that case we assume the whole display frame.
        if (mHardwareOrientation%2 == 1) {
            frame = Rect(h, w);
        } else {
            frame = Rect(w, h);
        }
    }

    if (viewport.isEmpty()) {
        // viewport can be invalid if it has never been set, in that case
        // we assume the whole display size.
        // it's also invalid to have an empty viewport, so we handle that
        // case in the same way.
        if (mHardwareOrientation%2 == 1) {
            viewport = Rect(h, w);
        } else {
            viewport = Rect(w, h);
        }
备注:此方法治标不治本,不是主流方法,只能救急。

2.权限管理

 通过

        List  listContents =  
            mPackageManager.getInstalledPackages(PackageManager.GET_PERMISSIONS);
获取有权限的应用,通过
                permisionsStrings =mPackageManager.getPackageInfo(listContents.get(i).packageName,
                        PackageManager.GET_PERMISSIONS).requestedPermissions; 
获取应用的权限,再对比要控制的权限。

所有权限的控制都是通过AppOpsManager来操作,最终在AppOpsService处理。AppOpsService在ActivityManagerService内构造。ServiceManager.addService是在自身的public方法内完成,此方法被ActivityManagerService调用。

权限管理是通过xml文件保存的,文件存储路径为/data/system/appops.xml,文件示例如下
































enable代表是否启用权限管理,leadcore新增

pkg代表一个程序管理的开始,属性n代表包名,

uid代表用户id,root用户id为0,

op代表权限设置,属性n代表权限代码,m代表权限模式(mode),0表示允许,1表示禁止,其他值(3)与没有设置都代表 总是询问。t表示时间,d表示Duration,r表示RejectTime。


3.hasSystemFeature

PackageManager的hasSystemFeature方法最终通过aidl调用到PackageManagerService.java里面

    public boolean hasSystemFeature(String name) {
        synchronized (mPackages) {
            return mAvailableFeatures.containsKey(name);
        }
    }

mAvailableFeatures保存了xml中解析出来以feature为标签的。xml文件保存于system/etc/permissions目录下。这些文件为直接从frameworks/native/data/etc/复制过去的。


4.

    "清除平板电脑上的所有数据"
    "清除手机上的所有数据"

你可能感兴趣的:(framework)