做launcher时,用户点击apk的图标就对应着需要打开这个apk,有两种方式可以启动这个apk

第一种:知道apk的包名和它的主Activity




1. // 帮助  
2. private ComponentName help_set;
3. private final static String help_set_pack = "cn.abc.help";
4. private final static String help_set_name = "cn.abc.help.MainActivity";
5.
6. /**
7. * 启动一个app
8. * com -- ComponentName 对象,包含apk的包名和主Activity名
9. * param -- 需要传给apk的参数
10. */
11. private void startApp(ComponentName com, String param) {
12. if (com != null) {
13. PackageInfo packageInfo;
14. try {
15. 0);
16. catch (NameNotFoundException e) {
17. null;
18. this, "没有安装", Toast.LENGTH_SHORT).show();
19. e.printStackTrace();
20. }
21. try {
22. new Intent();
23. intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
24. intent.setComponent(com);
25. if (param != null) {
26. new Bundle(); // 创建Bundle对象
27. "flag", param); // 装入数据
28. // 把Bundle塞入Intent里面
29. }
30. startActivity(intent);
31. catch (Exception e) {
32. this, "启动异常", Toast.LENGTH_SHORT).show();
33. }
34. }
35. }



第二种:只知道apk的包名,这种方法最常用了,毕竟要启动的apk不一定是我们自己写的。


1.        /*
2. * 启动一个app
3. */
4. public void startAPP(String appPackageName){
5. try{
6. this.getPackageManager().getLaunchIntentForPackage(appPackageName);
7. startActivity(intent);
8. catch(Exception e){
9. this, "没有安装", Toast.LENGTH_LONG).show();
10. }
11. }



综合起来比较第二种方法的代码要简洁得多,比较实用!