2011-11-29 32 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);

相關問題