Android есть способ запустить приложение программно, не добавляя в манифест? - PullRequest
1 голос
/ 30 ноября 2011

Я хотел бы только запускать некоторые приложения динамически с именем пакета из приложения, которое я разрабатываю, я уже пробовал это:

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?

Я понимаю ошибку (что мне нужно добавить приложение / действие в манифест), поэтому я хочу знать, есть ли обходной путь для добавления динамических действий в манифест, или есть способ динамически запустить приложение без добавления манифест, что приложение / активность, или есть разрешение, позволяющее открывать приложения?

Из моих исследований это кажется невозможным, но я хочу узнать мнение эксперта.

Спасибо заранее.

Ответы [ 3 ]

7 голосов
/ 30 ноября 2011

Если вы говорите о запуске других приложений от вашего, вот код, который вам нужен:

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();
    }
}
0 голосов
/ 29 апреля 2014

Intent i = context.getPackageManager (). GetLaunchIntentForPackage ("имя пакета приложений, которое вы хотите открыть"); context.startActivity (я);

0 голосов
/ 30 ноября 2011

Вы не можете запустить действие (экран) без добавления его в манифест!когда-либо!

Всегда добавляйте это!

...