Android有一种方法可以在不添加清单的情况下以编程方式启动应用程序吗?

时间:2011-11-29 20:11:15

标签: android manifest

我只想用我开发的应用程序包名称动态启动一些应用程序,我已经尝试过了:

intent = new Intent(Intent.ACTION_VIEW);
component = new ComponentName(getApplicationContext(), myPrefs.getString("Combo1", null));
Log.i("LOG", myPrefs.getString("Combo1", null));
intent.setComponent(component);

intent = pm.getLaunchIntentForPackage(myPrefs.getString("Combo1", null));
startActivity(intent);

两个作品和几个应用程序都会打开,但对于其他应用程序,我会收到此错误。

11-29 21:42:08.723: E/AndroidRuntime(4719): android.content.ActivityNotFoundException: Unable to find explicit activity class {com.lock/com.sec.android.app.phoneutil}; have you declared this activity in your AndroidManifest.xml?

我理解错误(我需要在清单中添加app / activity),所以我想知道是否是一种将动态活动添加到清单的解决方法,或者有一种方法可以动态启动应用程序而无需添加应用程序/活动的清单,或者是否有允许打开应用程序的权限?

从我的研究中看来似乎不可能,但我想知道专家的意见。

提前完成。

3 个答案:

答案 0 :(得分:7)

如果您正在谈论从您的应用中启动其他应用,那么这就是您需要的代码:

Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_LAUNCHER);
intent.setComponent(new ComponentName(packageName,mainActivity));
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
ctx.startActivity(intent);

你可以得到这样的主要活动:

Intent mIntent = ctx.getPackageManager().getLaunchIntentForPackage(packageName); 
if (mIntent != null) {
    if (mIntent.getComponent() != null) {
    mainActivity = mIntent.getComponent().getClassName();
    }
}

答案 1 :(得分:0)

如果不将活动添加到清单中,您就无法启动活动(屏幕)!永远!

始终添加它!

答案 2 :(得分:0)

Intent i = context.getPackageManager()。getLaunchIntentForPackage("您要打开的应用程序包名称");         context.startActivity(ⅰ);