在开发中有时候要从自己的程序里面启动另一个程序,一般我们用
Intent intent = new Intent();
intent.setComponent(new ComponentName("org.hy","org.hy.Activity"));
intent.setAction(Intent.ACTION_VIEW);
startActivity(intent);
org.yh则为报名,org.Activity则为入口activity,但在实际开发中我们并不知道其他的程序的包名以及入口activity,那我们便可这样实现
1.首先遍历手机内所有的应用程序的报名
- for (PackageInfo pi : packs) {
- HashMap<String, Object> map = new HashMap<String, Object>();
- map.put("icon", pi.applicationInfo.loadIcon(pm));
- // 图标
- map.put("appName", pi.applicationInfo.loadLabel(pm));
- // 应用名
- map.put("packageName", pi.packageName);
- // 包名
- items.add(map);
- // 循环读取存到HashMap,再增加到ArrayList.一个HashMap就是一项
- }
2.再用intent启动即可
- Intent i = pm.getLaunchIntentForPackage(packageName);
- //如果该程序不可启动(像系统自带的包,有很多是没有入口的)会返回NULL
- if (i != null)
- startActivity(i);