当前位置:文档之家› 关于启动外部Apk和多Activity同屏显示的方法

关于启动外部Apk和多Activity同屏显示的方法

关于启动外部Apk和多Activity同屏显示的方法
关于启动外部Apk和多Activity同屏显示的方法

启动一个外部的activity(APK)的方法.

启动一个外部的acitivity的方法有很多,基本上归类为2种,隐性和显性,区别是一个是知道另外一个APK的包名和启动的activity,另外一个是只知道activity设定的name,

针对实例:ApkA启动ApkB的话.

针对隐性,只要

ApkB在manifest中设置:

ApkA启动

Intent apk1=new Intent();

apk1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

apk1.setAction("com.aspire.demo_test1.DemoTestActivity1");

this.startActivity(apk1);

即可.

针对显性,只要

ApkA启动:

Intent apk1=new Intent();

apk1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

apk1.setClassName("com.aspire.demo_test1", "com.aspire.demo_test1.DemoTestActivity1"); this.startActivity(apk1);

即可.

区别就是ApkB是否需要设置.和ApkA是否已知ApkB的启动包和类.

多个同一APK中的activity同屏显示:

首先你的activity不要extends Activity,而要写成extends ActivityGroup

然后程序中.

protected LocalActivityManager mLocalActivityManager = null;

mLocalActivityManager =getLocalActivityManager();

Intent apk1=new Intent();

apk1.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

apk1.setClassName("com.aspire.demo_test1", "com.aspire.demo_test1.DemoTestActivity1"); Window w = mLocalActivityManager.startActivity("tab1", apk1);

View wd1=w.getDecorView();

这里返回的view就是另外一个activity的显示实例.可以获得多个activity的实例然后按照正常的UI组件设计设置layout.

多个非同一APK中的acitivity同屏显示.

基本使用方法和上面的同一APK中的使用方法一样,但是需要在这几个APK的manifest中进行设置android:sharedUserId="com.aspire",因为android的安全机制认为非指定共享的数据别人是无法访问的,因此要在自己的apk中使用别人的apk中的数据的话,要进行设置.

这里还需要特别注意的.如果是设置了同一sharedUserId,却数字签名不同的话,程序是不允许安装的,因此如果想在自己的程序中调用别的activity的组件作为自己的一个view的话,比需要实现2点:

1.设置android:sharedUserId.

2.使用相同的数字签名

注意:

1.如果在调用当中,某个组件直接执行startActivity(XXX);等操作的话,整个界面将会被新的Activity接管,而非画面的局部被接管.这点在开发上是要注意的,避免一些需要的内容被覆盖.

2.菜单方面问题,当ApkA和ApkB同时都是初始化启动并且都有菜单的情况,则2个菜单会累加后显示,但是如果是启动了ApkA之后(初始化之后),再启动的ApkB,则菜单只有ApkA的,因此如果需要菜单方面的定制,则注意开发时候,必须重新初始化菜单.

扩展性:

因为多个activity的同时显示成为可能,所以将android做成类似于windows这种一个桌面可以显示多个窗口(window)的样子.不过真机测试的情况下随着程序的增多速度有所减慢.

参考内容:

此次尝试的思路来自于TabActivity,Tabhost的实现和对其源码的跟踪. 感谢金田对manifest 的技术支持和华友ActivityGroup的分析.

轿车一键启动无法启动上电的故障原因

轿车一键启动无法启动上电的故障原因现在轿车各个控制执行检测环节都是用的电子产品,更新换代的速度和维修水平很难保持同步,一些维修点普遍使用替换的方法去排除故障,如果替换下来的是正常的,很少在维修点再给你更换下来,最后打包收费,增加了消费者负担,有时候十几块钱的问题,要花费几百甚至上千元才能解决问题。 下面就拿一键启动出现的故障分析原因和检修思路,一般一键启动出问题修好大约1000元以上,实际费用根本到不了。 车型:比亚迪系列l3、G3、G6 故障现象:停车后,再启动,检测钥匙正常,按一键启动按钮,没反应,整车不上电,启动灯变绿,按后绿灯闪烁。 原因初步分析:一键启动工作原理是检测到钥匙通讯信号后,踩下离合或者刹车,位置检测开关闭合,低电位有效,指示灯变绿,按下按钮,送给车身控制模块BCM(acc)高电位有效指令,BCM模块20脚输出高电平到继电器IG1,继电器闭合仪表整车供电。 BCM的继电器驱动20脚输出高电平受一下几个监测点的约束。 1:离合和刹车的位置检测状态 2:转向柱锁的信号状态, 3:启动按钮的状态, 4:钥匙和汽车ECU的通讯状态 下面逐步分析每个状态产生的故障现象 1:离合器或者制动位置不闭合,故障现象指示灯不变绿,按键后,

整车可以上电,转向柱可以解锁,但起动机无反应2:转向柱锁电机动作迟缓或者损坏,故障现象见标题3:按钮不闭合,整车无反应,但绿色指示灯不会闪烁4;显示检测不到钥匙 下附电气原理图

就本故障阐述检修思路

首先检查转向柱锁,拔下转向柱锁插头G28,测量个脚电压值是否和下表一致

如果G28插口2脚没有11-14v电压,他各脚电压会全部不正常,拔下G49测量线束无断线,即可判断车身控制模块BCM故障,更换BCM模块 判断模块是否正常:测量模块G49插口5脚是否有11-14v电压,如有检查线束,无电压更换模块。 本故障更换BCM 车身控制模块故障排除, 需要特别说明的是:有些启动无反应,转动方向盘位置后可以启动,原因是转向轴锁霍尔元件检测闭锁信号不正常所致,不属于实体故障原因

android系统开机启动流程分析

一,系统引导bootloader 加电,cpu执行bootloader程序,正常启动系统,加载boot.img【其中包含内核。还有ramdisk】 二,内核kernel bootloader加载kernel,kernel自解压,初始化,载入built-in驱动程序,完成启动。 内核启动后会创建若干内核线程,在后装入并执行程序/sbin/init/,载入init process,切换至用户空间(user-space) 内核zImage解压缩 head.S【这是ARM-Linux运行的第一个文件,这些代码是一个比较独立的代码包裹器。其作用就是解压Linux内核,并将PC指针跳到内核(vmlinux)的第一条指令】首先初始化自解压相关环境(内存等),调用decompress_kernel进行解压,解压后调用start_kernel启动内核【start_kernel是任何版本linux内核的通用初始化函数,它会初始化很多东西,输出linux版本信息,设置体系结构相关的环境,页表结构初始化,设置系 统自陷入口,初始化系统IRQ,初始化核心调度器等等】,最后调用rest_init【rest_init 会调用kernel_init启动init进程(缺省是/init)。然后执行schedule开始任务调度。这个init是由android的./system/core/init下的代码编译出来的,由此进入了android的代码】。 三,Init进程启动 【init是kernel启动的第一个进程,init启动以后,整个android系统就起来了】 init进程启动后,根据init.rc 和init. .rc脚本文件建立几个基本 服务(servicemanager zygote),然后担当property service 的功能 打开.rc文件,解析文件内容。【system/core/init/init.c】将service信息放置到service.list中【system/core/init/init_parser.c】。 建立service进程。【service_start(…) execve(…)】 在init.c中,完成以下工作 1、初始化log系统【解析/init.rc和init.%hardware%.rc文件,在两个 文件解析步骤2时执行“early-init”行动】 2、初始化设备【在/dev下创建所有设备节点,下载firmwares】 3、初始化属性服务器【在两个文件解析步骤2时执行“init”行动】

03-04-Android开发技术讲义 之启动另一个Activity

Android开发技术讲义之启动另一个 Activity 紧接着上一个练习,我们为上一个练习app添加一些代码,使之当我们点击send 按钮的时候能够启动另一个Activity。 任务 在文本框中输入消息,点击Send按钮,消息会显示在第二个Activity中。 对发送按钮进行响应 1.在res/layout目录中,编辑activity_my.xml 2.在

相关文档 最新文档