修改Android系统字体大小

来源:互联网 发布:窥一隅而知全貌的意思 编辑:程序博客网 时间:2024/06/05 11:02

      这两天做项目需要在代码里修改android系统的字体大小,本来以为和修改系统音量亮度一样,是挺简单的一件事情,没想到其中大有文章。这是因为android没有提供我们一个方法在应用层直接修改系统字体大小。那么我是怎么完成的?简单的说就是调用framework层的函数,下面给出具体步骤:

     一、使用反射机制调用framework层的方法

 private Configuration mconfig = new Configuration();  
    
    public void setFontSize(){
        Method method;  
        try {
            Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative");  
            try {  
                Object am = activityManagerNative.getMethod("getDefault").invoke(activityManagerNative);  
                method = am.getClass().getMethod("updatePersistentConfiguration", android.content.res.Configuration.class);
                mconfig.fontScale = 0.9f;  
                method.invoke(am,mconfig);  
                Log.e("TAG","setFontSize  success ");
            } catch (IllegalArgumentException e) {
                e.printStackTrace();  
            } catch (SecurityException e) {
                e.printStackTrace();  
            } catch (IllegalAccessException e) {
                e.printStackTrace();  
            } catch (InvocationTargetException e) {
                e.printStackTrace();  
            } catch (NoSuchMethodException e) {
                e.printStackTrace();  
            }  
              
        } catch (ClassNotFoundException e) {  
            e.printStackTrace();  
        }  
    }  

 二、在xml 文件中添加权限


<manifest xmlns:android="http://schemas.android.com/apk/res/android"

……

android:sharedUserId="android.uid.system"

……>


<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"/>


三,将项目进行系统签名


具体步骤是下载:platform.pk8、platform.x509.pem、signapk.jar三个文件,建议放在同一个目录下

我已经把这几个文件放到网盘下http://pan.baidu.com/s/1hsNQTxi  提取码是fy4a

准备好上述文件以后,编写一个批处理文件放在同一个目录下

批处理文件的创建很简单,先创建一个TXT文件,写好以后把后缀名改为.bat就可以了

批处理文件中写以下内容:

va -jar signapk.jar platform.x509.pem platform.pk8  原文件名.apk 目标文件名.apk
adb remount
adb push MyDemo_signed.apk  /system/app
pause

批处理文件的名字随便取


运行批处理文件后,我们的程序就自动运行在设备上了。

这里要注意,只有在debug模式下我们才能这样处理。


对了,这里提一句,系统签名并且运行的时候,一定要把项目里的so文件全部push到系统app文件夹下啊

0 0
原创粉丝点击