2011-11-29 56 views
1

我只想从应用程序,我开发的软件包名称动态地启动一些应用程序,我已经尝试过这样的:Android有没有方法以编程方式启动应用程序而不添加到清单?

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? 

我理解错误(我需要添加在清单中的应用程序/活动),所以我想知道,如果是一个解决方法,以动态添加活动来体现,或者有一个动态的启动方式应用程序中不添加应用程序/活动的清单,或者有允许打开应用程序的权限?

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

Thanx提前。

+0

出于好奇,你为什么要这么做? – vanleeuwenbram

+0

请参阅http://stackoverflow.com/questions/5374323/add-activities-programmatically-in-android –

+0

我想制作一个启动差异的应用程序。应用程序动态从您的手机 – djcharon

回答

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

在这给我11-29 23:13:08.674:E/AndroidRuntime(6652):java.lang.NullPointerException:类名为null – djcharon

+0

这是可以请求这样thanx的正确解决方案。 – djcharon

+0

嗨djcharon,很高兴它帮助。很高兴接受答案是正确的。谢谢! – gwa

0

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

总是添加它!

0

意向书I =上下文。 getPackageManager()。getLaunchIntentForPackage(“你想打开的应用程序包名称”); context.startActivity(i);

相关问题