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

Android有没有一种方法可以在不添加清单的情况下以编程方式启动应用程序?,android,manifest,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 = new Intent(Intent.ACTION_VIEW);
component = new ComponentName(getApplicationContext(), myPrefs.getString("Combo1", null));
Log.i("LOG", myPrefs.getString("Combo1", null));
intent.setComponent(component);

这两种方法都可以工作,并且打开了几个应用程序,但对于其他应用程序,我得到了这个错误

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?
我理解这个错误(我需要在清单中添加应用程序/活动),所以我想知道是否有一个解决方法可以动态地将活动添加到清单,或者有一种方法可以动态启动应用程序而不将该应用程序/活动添加到清单,或者有一个允许打开应用程序的权限

从我的研究看来这是不可能的,但我想知道专家的意见


Thanx提前。

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


始终添加它

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


始终添加它

如果您正在谈论从您的应用程序启动其他应用程序,以下是您需要的代码:

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();
    }
}

如果您正在谈论从您的应用程序启动其他应用程序,以下是您需要的代码:

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();
    }
}

Intent i=context.getPackageManager().getLaunchIntentForPackage(“要打开的应用程序包名称”);
背景。起始触觉(i)

Intent i=context.getPackageManager().getLaunchIntentForPackage(“要打开的应用程序包名称”);
背景。起始触觉(i)

出于好奇,你为什么要这样做?请看我想制作一个应用程序,从你的手机动态启动diff.app我知道这是一个覆盖权限的解决方案,但它只适用于根手机。出于好奇,你为什么要这样做?请看我想做一个应用程序,从你的手机动态启动diff.app我知道这是一个覆盖权限的解决方案,但它只适用于根手机。在这个问题上,它给我11-29 23:13:08.674:E/AndroidRuntime(6652):java.lang.NullPointerException:类名是nullHi djcharon,很高兴它有帮助。如果能接受正确的答案就好了。谢谢关于这一点,请告诉我11-29 23:13:08.674:E/AndroidRuntime(6652):java.lang.NullPointerException:类名是nullHi djcharon,很高兴它有帮助。如果能接受正确的答案就好了。谢谢