Запустить другое приложение из виджета Android?

Итак, что я хочу сделать, так это создать виджет, который будет просто запускать другое приложение при нажатии виджета. Приложения, однако, созданы не мной, то есть приложение Market, браузер и тому подобное. Я уже настроил AppWidgetProvider и сделал все изменения в манифесте и все такое. Мне просто нужно знать, что я должен добавить в исходный файл класса/Java, который это сделает. Любая помощь приветствуется, спасибо!


person natehoch96    schedule 25.07.2011    source источник


Ответы (1)


Попробуйте сделать это:

String packageName = "com.package";
String className = "com.package.MainActivity";
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.setComponent(new ComponentName(packageName, className));
startActivity(intent);

ОБНОВЛЕНИЕ:

Это выглядит как лучший способ запуска приложения:

PackageManager pm = getPackageManager();
try
{
    String packageName = "com.example.package";
    Intent launchIntent = pm.getLaunchIntentForPackage(packageName);
    startActivity(launchIntent);
}
catch (Exception e1)
{
}
person A. Abiri    schedule 26.07.2011
comment
Я получаю несколько ошибок, но основные из них, по-видимому, заключаются в том, что для startActivity отсутствует тип возвращаемого значения, и это намерение не может быть преобразовано в тип, в разработке которого я новичок, поэтому, пожалуйста, обратите внимание на мою неопытность, спасибо за помощь. - person natehoch96; 26.07.2011
comment
Убедитесь, что у вас есть правильное имя пакета и имя класса. Кроме того, попробуйте изменить startActivity(намерение) на MyActivity.this.startActivity(намерение). Если это не сработает, мне нужно, чтобы вы показали мне, как выглядит код, когда вы вводите свои значения, потому что я поместил этот код в свое приложение, и он работает без проблем. - person A. Abiri; 26.07.2011
comment
Хорошо, я думал, что у меня это работает, но теперь он выдает мне ошибку в намерении.setComponent, говоря, что синтаксическая ошибка в токене setComponent, = ожидается после этого токена. Что я должен делать? Спасибо. - person natehoch96; 28.07.2011
comment
Можете ли вы показать мне свой код с именем пакета и именем класса, чтобы я мог сказать вам, почему вы получаете ошибку? - person A. Abiri; 29.07.2011
comment
Я только что нашел другой способ запустить приложение, которое кажется более чистым и официальным. Он работал в классе активности, но я не проверял его в сервисе. Я поместил код в свой ответ в обновленном разделе. Посмотрите, работает ли это. Если нет, то прочитайте мой предыдущий комментарий. - person A. Abiri; 29.07.2011
comment
Хорошо, новый код, кажется, работает для меня. Хотя теперь я столкнулся с большим количеством ошибок, но, к счастью, эти ошибки не связаны с предоставленным вами кодом. Однако я начал новый пост об этом, так как не хотел загромождать его несвязанными вопросами. Спасибо за твою помощь. - person natehoch96; 29.07.2011
comment
Ух ты. Он благодарен, но не проголосовал за ваш ответ и не принял его. Слабый соус. Это сработало идеально для меня. +1 - person xdumaine; 07.12.2012