Chinaunix首页 | 论坛 | 博客
  • 博客访问: 902827
  • 博文数量: 75
  • 博客积分: 6236
  • 博客等级: 准将
  • 技术积分: 726
  • 用 户 组: 普通用户
  • 注册时间: 2006-11-03 14:43
文章分类

全部博文(75)

文章存档

2019年(1)

2018年(6)

2017年(4)

2015年(1)

2014年(9)

2013年(1)

2012年(3)

2011年(9)

2010年(3)

2009年(2)

2008年(4)

2007年(24)

2006年(8)

我的朋友

分类: Android平台

2014-01-17 12:18:38

“静默安装/启动App”,有很多方式,这里只讨论一下方式:
1、App-2.apk 作为资源,放到 App-1 的 assert 目录下;
2、将 App-1 称为主进程,在主进程 App-1 中,静默启动 App-2(子进程)

技术要点说明:
1、在App-1中,主窗口是 MainActivity,通过
        Intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        Context.startActivity(intent);
   来启动一个新的进程(窗口还是App-1中定义的一个 InnerAppActivity);
2、在被启动的Activity(即InnerAppActivity),采用 android.support.v4.app.FragmentActivity 的实例作为主窗口;
3、在  FragmentActivity 窗口中,加载 App-2中的 fragment实例
  • 准备App-2 中的 fragment 的窗口的 View
            FrameLayout rootView = new FrameLayout(this);
            rootView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
            rootView.setId(android.R.id.primary);
            setContentView(rootView);
  • 加载class
            String fragmentClass = mAddonLunchFragment;
            Fragment f = (Fragment) classLoader.loadClass(fragmentClass).newInstance();
  • 添加 App-2 里的 fragment
            FragmentManager fm = getSupportFragmentManager();
            FragmentTransaction ft = fm.beginTransaction();
            ft.add(android.R.id.primary, f);
            ft.commit();
4、注意在 App-1 的 AndroidManifest.xml中,对InnerAppActivity的描述需要加上  android:process 属性
                           android:label="我是一个子进程"
                  android:process=":child_process_any_name_is_ok">
        

5、在 App-2 中对 android-support-v4.jar 只是编译连接生成apk即可,不需要将这个 jar 导入到 App-2 包中,否则在 App-1启动 App-2后的 classloading 中,会出现
had used a different android/support/v4/app/Fragment 错误
     不导入android-support-v4.jar的配置
  • 在Eclipse 环境下,即“Properties->Java Build Path->Order and Export”,对android-support-v4.jar 不要 Export(不要勾选);
  • 在Idea环境下,即“Project Structure->Modules (App-2)-> Dependencies”中,对 android-support-v4.jar 选择 "Provided"模式,而不是默认的"Compile"模式

详见附件Main_Other_App_APK_Demo.zip
阅读(11473) | 评论(2) | 转发(0) |
给主人留下些什么吧!~~

梁辰溪2014-12-24 05:19:24

哦 解决了

梁辰溪2014-12-24 05:04:10

换在我自己的项目里面老有java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation  错误 怎么办呢