近期一个任务是修改在 system/framework 出现更新的时候,系统重启展示的升级对话框。

第一步,定位文件位置。过程不必赘述,细究起来可以去研究Android系统的启动流程。

目标位置:frameworks/base/policy/src/com/android/internal/policy/impl/PhoneWindowManager.java

的4731行的showBootMessage()方法。

public void showBootMessage(final CharSequence msg, final boolean always) {

if (mHeadless) return;

mHandler.post(new Runnable() {

@Override public void run() {

if (mBootMsgDialog == null) {

mBootMsgDialog = new ProgressDialog(mContext) {

// This dialog will consume all events coming in to

// it, to avoid it trying to do things too early in boot.

@Override public boolean dispatchKeyEvent(KeyEvent event) {

return true;

}

@Override public boolean dispatchKeyShortcutEvent(KeyEvent event) {

return true;

}

@Override public boolean dispatchTouchEvent(MotionEvent ev) {

return true;

}

@Override public boolean dispatchTrackballEvent(MotionEvent ev) {

return true;

}

@Override public boolean dispatchGenericMotionEvent(MotionEvent ev) {

return true;

}

@Override public boolean dispatchPopulateAccessibilityEvent(

AccessibilityEvent event) {

return true;

}

};

mBootMsgDialog.setTitle(R.string.android_upgrading_title);

mBootMsgDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);

mBootMsgDialog.setIndeterminate(true);

mBootMsgDialog.getWindow().setType(

WindowManager.LayoutParams.TYPE_BOOT_PROGRESS);

mBootMsgDialog.getWindow().addFlags(

WindowManager.LayoutParams.FLAG_DIM_BEHIND

| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN);

mBootMsgDialog.getWindow().setDimAmount(1);

WindowManager.LayoutParams lp = mBootMsgDialog.getWindow().getAttributes();

lp.screenOrientation = ActivityInfo.SCREEN_ORIENTATION_NOSENSOR;

mBootMsgDialog.getWindow().setAttributes(lp);

mBootMsgDialog.setCancelable(false);

mBootMsgDialog.show();

WindowManager.LayoutParams wlp = mBootMsgDialog.getWindow().getAttributes(); wlp.width=dip2px(460,mContext);

wlp.height=dip2px(322,mContext);

wlp.gravity= Gravity.CENTER;

mBootMsgDialog.getWindow().setAttributes(wlp); mBootMsgDialog.getWindow().findViewById(R.id.customPanel).setBackgroundColor(mContext.getResources().getColor(R.color.jidou_dialog_transparent));

}

mBootMsgDialog.setMessage(msg);

}

});

}

这里需要注意的是,配置dialog的长宽,和隐藏dialog的背景黑色。最简单的方法请看代码show()和它下面几行的设置。基本上是可以解决问题。注意要先show().

找到了,接下来就是操刀修改了。这个对话框比较简单,截图也比较麻烦,就不上图了。



android 系统升级 方法,Android 系统升级的对话框相关推荐

  1. android groovy方法,Android Gradle从入门到精通(三)Groovy快速入门指南

    前言 在前面我们学习了为什么现在要用Gradle?和Gradle入门前奏两篇文章,对Gradle也有了大概的了解,这篇文章我们接着来学习Groovy的基础,要想学好Gradle,Groovy是必须要掌 ...

  2. android settext方法,Android中EditText setText方法的踩坑实战

    1.平平常常中就这样开始 某一天,我准备做一个搜索功能,这个搜索功能呢大概是在主活动A中,用EditText接收输入,当EditText监听到输入框中内容有变化,跳转到活动B中,活动B中准备有搜索历史 ...

  3. android drawtext 方法,Android 文字绘制(DrawText)技术总结

    这里的绘制文字不是直接调用TextView.setText(String content)去展示文字内容.而是在View上面通过 canvas.drawText(text, x, y,textPain ...

  4. 改变android背景方法,android 改变背景图片的两种方法

    1.利用drawable XML 在res/drawable下创建文件,如:myselect.xml android:drawable="@drawable/buttom_focused&q ...

  5. android application 方法,Android Studio新建Android application配置的详细方法

    Android Studio如何新建Android application配置呢?下面是小编介绍的Android Studio新建Android application配置的详细方法,有需要的小伙伴一 ...

  6. android bindservice方法,Android bindservice方法返回false

    我想从另一个类(BaseExpandableListAdapter)的活动中调用一个方法.活动中的方法启动服务并调用bindService(,,)方法.但是,bindService方法总是返回fals ...

  7. android linearlayout 方法,android布局----LinearLayout布局方式

    线性布局,控件成直线方式排列,要么水平排列,要么垂直排列. 对着layout文件夹右键,然后选择新建android xml file,选择资源类型选择 layout --> 根节点选择 Line ...

  8. android随机数方法,Android生成随机数的方法实例

    本文实例为大家分享了Android生成随机数的具体代码,供大家参考,具体内容如下 java文件 package com.example.my_xm_bw_luowei; import android. ...

  9. android gettext方法,android – EditText不返回getText()上的内容

    下面的代码片段显示了一个带有简单登录表单的Dialog.问题是当用户点击登录按钮时,输入到EditTexts的文本不会在getText() – 调用上返回.但是,如果我在xml-layout的Edit ...

  10. android linearlayout 方法,Android布局控件-LinearLayout详解

    1.线性布局 LinearLayout LinearLayout简单来说就是线性布局,线性肯定是具有横竖两种方向的,水平和垂直. 在使用LinearLayout的时候,需要注意以下几点 2.排列方式( ...

最新文章

  1. 后缀自动机 ---- P3804 【模板】后缀自动机(求每个等价类最长串的出现次数)
  2. python学会了可以做什么菜_python学习之路(24)
  3. 【深入剖析Tomcat笔记】第一篇 基础知识储备
  4. virtualbox下给centos7固定ip
  5. netbeans项目缺少服务器,Netbeans,添加Glassfish服务器“不存在”
  6. C# 数据库系统中使用GDI+绘制柱状图
  7. iphone黑屏转圈_iphone7无限转圈黑屏怎么回事?
  8. java实现红包要多少钱_Java实现抢红包算法,附完整代码(公平版和手速版)
  9. [剑指offer][JAVA]面试题第[10-2]题[青蛙跳台阶问题][动态规划][递归]
  10. instring java_Decode a string in Java
  11. Mac开发环境搭建_zsh替换bash_2
  12. 以某种结构遍历添加的基础类
  13. mysql解压版配置win8_Windows安装mysql8解压版
  14. 桌面虚拟化之XenDesktop7
  15. zookeeper watcher使用注意点
  16. 【STM8L】STM8L之按键中断
  17. 斐讯K2P B1 博通TTL刷机方法
  18. 软件架构-redis特性和集群特性(下)
  19. 儿童讲堂 - 量词的解释
  20. 用python写名片管理系统

热门文章

  1. 【毕业设计】60-基于ZigBee无线智能消防\烟雾报警逃生系统设计(原理图工程、源代码、低重复率参考文档、实物图)
  2. 7-3 不能用循环是一件多么悲伤的事 (30 分)
  3. Duilib HandleMessage与MessageHandler区别
  4. 供配电系统之功率的运算
  5. 微信小程序如何设置自定义tabBar
  6. dos命令行连接操作ORACLE数据库
  7. 买翻100倍以上的股票买最受益于中国经济腾飞的少年型股票(2009-05-31 01:49:25)
  8. C# textBox控件焦点转移
  9. 制作属于自己的过狗菜刀:为菜刀添加接口
  10. kindeditor编辑器上传图片超宽自动压缩-PHP代码