根据包名启动其它应用,目前我发现只有两种方法,如果还有其他方法,请留言,谢了。
方法一、如下代码,不过,我在HTC测试的时候发现这个会有异常,至于什么原理,希望知道的高手能高手告诉一下。
Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage(packageName);
startActivity(LaunchIntent);
方法二、代码如下:
/**
* 根据指定的包名,启动应用
* @param packageName
* @return
*/
public static ComponentName getComponent(Context context,String packageName)
{
ComponentName pn = null;
List<ResolveInfo> matches = findActivitiesForPackage(
context, packageName);
if ((matches != null) && (matches.size() > 0))
{
ResolveInfo resolveInfo = matches.get(0);
ActivityInfo activityInfo = resolveInfo.activityInfo;
//return startApk(activityInfo.packageName, activityInfo.name);
pn = new ComponentName(packageName,activityInfo.name);
}
return pn;
}
public static List<ResolveInfo> findActivitiesForPackage(Context context,
String packageName)
{
final PackageManager pm = context.getPackageManager();
final Intent mainIntent = new Intent(Intent.ACTION_MAIN, null);
mainIntent.addCategory(Intent.CATEGORY_LAUNCHER);
mainIntent.setPackage(packageName);
final List<ResolveInfo> apps = pm.queryIntentActivities(mainIntent, 0);
return apps != null ? apps : new ArrayList<ResolveInfo>();
}