月份: 2020-02

Android 通过应用包名启动外部应用

void startFit(String packageName)
{
    PackageManager packageManager = this.getApplicationContext().getPackageManager();
    PackageInfo pi = null;
    try {
        pi = packageManager.getPackageInfo(packageName, 0);
        if(pi == null)
        {
            Toast.makeText(FullscreenLauncher.this, "应用未安装", Toast.LENGTH_SHORT).show();
            return;
        }
    } catch (PackageManager.NameNotFoundException e) {
    }
    Intent resolveIntent = new Intent(Intent.ACTION_MAIN, null);
    resolveIntent.addCategory(Intent.CATEGORY_LAUNCHER);
    resolveIntent.setPackage(pi.packageName);
    List<ResolveInfo> apps = packageManager.queryIntentActivities(resolveIntent, 0);
    ResolveInfo ri = apps.iterator().next();
    if (ri != null ) {
        String className = ri.activityInfo.name;
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        this.getApplicationContext().startActivity(intent);
    }
}