2010-08-06 3 views

ответ

79

Попробуйте использовать PackageManager и getLaunchIntentForPackage()

+1

Спасибо, я пропустил эту функцию, глядя на PackageManager ... – bart

+0

Сэр Почему косяк я запустить Launcher, получив его имя пакета его дает java.lang.NullPointer Exception ? –

+0

Запускает ли новый экземпляр? Я хочу запустить существующий. Как мне это сделать? – JohnyTex

116

Просто используйте эти две строки, так что вы можете запускать любое установленное приложение, чье package name известно:

Intent LaunchIntent = getPackageManager().getLaunchIntentForPackage("com.example.abc"); 
startActivity(LaunchIntent); 

Если вы не знаете имя пакета приложения что вы хотели запустить, затем попробуйте свои силы на

PackageManager pm; 
pm = getPackageManager(); 
// get a list of installed apps. 
packages = pm.getInstalledApplications(0); 

Для получения дополнительной информации обратитесь к этой ссылке Using Package Manager

+2

+1 его хороший код –

+1

Это запускает новый новый экземпляр? Я хочу запустить существующий. Как мне это сделать? – JohnyTex

+0

@hohny tex вы находите решение своей проблемы –

12

Вы можете получить намерение запуска через PackageManager класс:

PackageManager pm = context.getPackageManager(); 
Intent launchIntent = pm.getLaunchIntentForPackage("com.example.package"); 
context.startActivity(launchIntent); 

Обратите внимание, что getLaunchIntentForPackage возвращает нулевое значение, если пакет не найден. Таким образом, вы можете добавить пустой чек:

if (launchIntent != null) { 
    context.startActivity(launchIntent); 
} else { 
    Toast.makeText(context, "Package not found", Toast.LENGTH_SHORT).show(); 
} 
+0

Этот ответ немного отличается от более старых ответов, за исключением того, что он на 3 года новее. Я не понимаю, насколько оправданы оправдания. – hBrent

Смежные вопросы