Android4.4.2配置修改记录

1、指定默认Launch

Android自带Launch一般都不是我们想要的 ,每个产品都会定制一个自己的Launch,而且是一开机就显示,不需要选择,修改如下:

frameworks/base/services/java/com/android/server/am/ActivityManagerService.java 

添加一个方法:
    private void setDefaultLauncher() {
        // get default component   
        String packageName = "com.android.vehiclecs10";//默认launcher包名
        String className = "com.android.csoLanucher.LanucherActivity";默认launcher入口
        Slog.i(TAG, "defautl packageName = " + packageName + ", default className = " + className);

         IPackageManager pm = ActivityThread.getPackageManager();  
      
                //清除当前默认launcher 
                ArrayList
    
    
     
      intentList = new ArrayList
     
     
      
      ();  
                ArrayList
      
      
       
        cnList = new ArrayList
       
       
        
        ();  
                mContext.getPackageManager().getPreferredActivities(intentList, cnList, null);  
                IntentFilter dhIF;  
                for(int i = 0; i < cnList.size(); i++)  
                {     
                    dhIF = intentList.get(i);  
                    if(dhIF.hasAction(Intent.ACTION_MAIN) &&  
                    dhIF.hasCategory(Intent.CATEGORY_HOME))
                    {
                        mContext.getPackageManager().clearPackagePreferredActivities(cnList.get(i).getPackageName());
                    }
               }

                //获取所有launcher activity 
                Intent intent = new Intent(Intent.ACTION_MAIN);
                intent.addCategory(Intent.CATEGORY_HOME);
                List
        
        
          list = new ArrayList 
         
           (); try { list = pm.queryIntentActivities(intent, intent.resolveTypeIfNeeded(mContext.getContentResolver()), PackageManager.MATCH_DEFAULT_ONLY,UserHandle.getCallingUserId()); }catch (RemoteException e) { throw new RuntimeException("Package manager has died", e); } // get all components and the best match IntentFilter filter = new IntentFilter(); filter.addAction(Intent.ACTION_MAIN); filter.addCategory(Intent.CATEGORY_HOME); filter.addCategory(Intent.CATEGORY_DEFAULT); final int N = list.size(); Slog.d(TAG, "N:::::hyhyhyhy:::: = " + N); ComponentName[] set = new ComponentName[N]; int bestMatch = 0; for (int i = 0; i < N; i++) { ResolveInfo r = list.get(i); set[i] = new ComponentName(r.activityInfo.packageName, r.activityInfo.name); Slog.d(TAG, "r.activityInfo.packageName:::::hyhyhyhy:::: = " + r.activityInfo.packageName); Slog.d(TAG, "r.activityInfo.name:::::hyhyhyhy:::: = " + r.activityInfo.name); if (r.match > bestMatch) bestMatch = r.match; } //设置默认launcher ComponentName launcher = new ComponentName(packageName, className); try { pm.addPreferredActivity(filter, bestMatch, set, launcher,UserHandle.getCallingUserId()); } catch (RemoteException e) { throw new RuntimeException("Package manager has died", e); } } 
          
        
       
       
      
      
     
     
    
    

然后在ActivityManagerService类中的

   boolean startHomeActivityLocked(int userId) {

        if (mHeadless) {
            // Added because none of the other calls to ensureBootCompleted seem to fire
            // when running headless.
            ensureBootCompleted();
            return false;
        }

        if (mFactoryTest == SystemServer.FACTORY_TEST_LOW_LEVEL
                && mTopAction == null) {
            // We are running in factory test mode, but unable to find
            // the factory test app, so just sit around displaying the
            // error message and don't try to start anything.
            return false;
        }
        Intent intent = getHomeIntent();
        
/在此处添加上面我们定义的setDefaultLauncher
        setDefaultLauncher();//By Lhongbo
/

        ActivityInfo aInfo =
            resolveActivityInfo(intent, STOCK_PM_FLAGS, userId);
        if (aInfo != null) {
            intent.setComponent(new ComponentName(
                    aInfo.applicationInfo.packageName, aInfo.name));
            // Don't do this if the home app is currently being
            // instrumented.
            aInfo = new ActivityInfo(aInfo);
            aInfo.applicationInfo = getAppInfoForUser(aInfo.applicationInfo, userId);
            ProcessRecord app = getProcessRecordLocked(aInfo.processName,
                    aInfo.applicationInfo.uid, true);
            if (app == null || app.instrumentationClass == null) {
                intent.setFlags(intent.getFlags() | Intent.FLAG_ACTIVITY_NEW_TASK);
                mStackSupervisor.startHomeActivity(intent, aInfo);
            }
        }

        return true;
    }

删除自带Launch,重新编译system,开机就能直接进到我们自己的Launch了


2、修改SD卡和USB路径

Android自带的SD 和USB路径都指定在 device/fsl/sabresd_6dq/fstab.freescale ,默认SD卡的命名为extsd 和extsd1 ,USB命名为udisk 和udisk1
修改sd卡和usb名称如下:

device/fsl/sabresd_6dq/fstab.freescale

/devices/platform/sdhci-esdhc-imx.2/mmc_host/mmc1 /mnt/media_rw/extsd vfat defaults voldmanaged=extsd:auto
/devices/platform/sdhci-esdhc-imx.0/mmc_host/mmc3 /mnt/media_rw/sdcard1 vfat defaults voldmanaged=sdcard1:auto

/devices/platform/fsl-ehci.0/usb1/1-1/1-1:1.0 /mnt/media_rw/udisk vfat defaults voldmanaged=udisk:auto
/devices/platform/fsl-ehci.1/usb2/2-1/2-1:1.0 /mnt/media_rw/udisk2 vfat defaults voldmanaged=udisk2:auto

device/fsl/imx6/etc/init.rc

    mkdir /mnt/media_rw/extsd 0755 system system
    symlink /mnt/media_rw/extsd /storage/extsd
    symlink /mnt/media_rw/extsd /mnt/extsd

    mkdir /mnt/media_rw/sdcard1 0755 system system
    symlink /mnt/media_rw/sdcard1 /storage/sdcard1
    symlink /mnt/media_rw/sdcard1 /mnt/sdcard1

    mkdir /mnt/media_rw/udisk 0755 system system
    symlink /mnt/media_rw/udisk /storage/udisk
    symlink /mnt/media_rw/udisk /mnt/udisk

    mkdir /mnt/media_rw/udisk2 0755 system system
    symlink /mnt/media_rw/udisk2 /storage/udisk2
    symlink /mnt/media_rw/udisk2 /mnt/udisk2


3、修改默认语言

默认语言的选择实现是在build/core/Makefile里,从PRODUCT_LOCALES里选择第一个语言作为默认语言,如下:

# Whether there is default locale set in PRODUCT_PROPERTY_OVERRIDES
product_property_override_locale_language := $(strip \
    $(patsubst ro.product.locale.language=%,%,\
    $(filter ro.product.locale.language=%,$(PRODUCT_PROPERTY_OVERRIDES))))
product_property_overrides_locale_region := $(strip \
    $(patsubst ro.product.locale.region=%,%,\
    $(filter ro.product.locale.region=%,$(PRODUCT_PROPERTY_OVERRIDES))))

# Selects the first locale in the list given as the argument,
# and splits it into language and region, which each may be
# empty.
define default-locale
$(subst _, , $(firstword $(1)))
endef

# Selects the first locale in the list given as the argument
# and returns the language (or the region), if it's not set in PRODUCT_PROPERTY_OVERRIDES;
# Return empty string if it's already set in PRODUCT_PROPERTY_OVERRIDES.
define default-locale-language
$(if $(product_property_override_locale_language),,$(word 1, $(call default-locale, $(1))))
endef
define default-locale-region
$(if $(product_property_overrides_locale_region),,$(word 2, $(call default-locale, $(1))))
endef

然后通过build/tool/buildinfo.sh文件将如下段写到文件build.prop,如下:

echo “ro.product.locale.language=$PRODUCT_DEFAULT_LANGUAGE”
echo “ro.product.locale.region=$PRODUCT_DEFAULT_REGION” 

因此,要改变默认语言用下面两种方法中的一种就行了:

1、修改\build\target\product\languages_full.mk文件,PRODUCT_LOCALES字段里,将要选择的语言放在第一位,如: 

PRODUCT_LOCALES := en_US zh_CN 默认语言是英语;
2、在persist.sys.language 和persist.sys.country 里指定语言,如下: PRODUCT_PROPERTY_OVERRIDES := \
persist.sys.language=zh \
persist.sys.country=CN build.prop文件的处理是在system/core/init/property_service.c。


4、修改版本号和机器型号

在编译好的out目录下修改 android_kk4.4.2/out/target/product/sabresd_6dq/system/build.prop 
ro.build.display.id=20150920 GLTK-V2.0    //设置--关于平板电脑--版本号
ro.product.model=iMX6DL-CS10               //设置--关于平板电脑--型   号

5.设置-安全-验证应用默认不勾允
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

     
     
      
      false
     
     
 
6.设置-声音-触摸提示音与锁屏提示音默认不勾允状态
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

      
      
       
       0
      
      

      
      
       
       false
      
      

7. 休眠策略
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

     
     
      
      0
     
     

     
        

8. 默认勾选 未知来源
frameworks/base/packages/SettingsProvider/res/values/defaults.xml

     
     
      
      false
     
      

9. 第三方应用强制横屏
frameworks/base/services/java/com/android/server/wm/WindowManagerService.java  
    boolean updateOrientationFromAppTokensLocked(boolean inTransaction) {
        long ident = Binder.clearCallingIdentity();
        try { 
            int req = getOrientationFromWindowsLocked();
            if (req == ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED) {
                req = getOrientationFromAppTokensLocked();
            }     
            // req = ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE; //强制横屏0度  
            // req = ActivityInfo.SCREEN_ORIENTATION_PORTRAIT; //强制竖屏左转90度  
            if (req != mForcedAppOrientation) {
                mForcedAppOrientation = req;
                //send a message to Policy indicating orientation change to take
                //action like disabling/enabling sensors etc.,
                mPolicy.setCurrentOrientationLw(req);
                if (updateRotationUncheckedLocked(inTransaction)) {
                    // changed
                    return true; 
                }     
            }     

            return false;
        } finally {
            Binder.restoreCallingIdentity(ident);
        }     
    }

10. 默认浏览器设置
packages/apps/Browser/src/com/android/browser/BrowserSettings.java



  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值