Вызов активности из приложения из другого приложения Android - PullRequest
3 голосов
/ 04 декабря 2010

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

                Intent intent = new Intent();
                intent.setClassName("another_app_package_name", "another_app_package_name.class_name_in_that_package");

                startActivity(intent);

Но мое приложение перестало выдавать исключение NoActivityFound, говоря, что не удалось найти явный класс активности another_app_package_name.class_name_in_that_package.

Я упускаю что-то очевидное. Кто-нибудь может помочь, пожалуйста?

Я новичок в платформе Android.

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

Ответы [ 3 ]

8 голосов
/ 12 декабря 2012
final Intent intent = new Intent();

ComponentName cName = new ComponentName
("package_name","package_name.class_name");

intent.setComponent(cName);         
startActivity(intent);

Это будет работать. У меня это сработало!

1 голос
/ 24 февраля 2012

Примерно так будет работать:

final Intent intent = new Intent();
intent.setComponent(new ComponentName("<package_name>", "<activity_class_name"));
context.startActivity(intent);

Но приложение, которому принадлежит действие, которое вы хотите запустить, должно объявить действие с "экспортированным" в манифесте.По умолчанию для этого параметра установлено значение false, если действие не объявляет фильтры намерений.

0 голосов
/ 04 декабря 2010

Попробуйте что-то вроде

final Intent i = new Intent();
i.setAction(Intent.ACTION_MAIN); //might not be necessary
i.setClassName("com.htc.android.worldclock", "com.htc.android.worldclock.WorldClockTabControl");
startActivity(i);

Название класса - например, "com.htc.android.worldclock.WorldClockTabControl" - должен быть полностью квалифицирован.

Если это не работает, попробуйте вызвать следующий метод со строкой имени класса вашего намерения:

public static boolean isIntentAvailable(final Context context,
        final String action) {
    final PackageManager packageManager = context.getPackageManager();
    final Intent intent = new Intent(action);
    final List<ResolveInfo> list = packageManager.queryIntentActivities(
            intent, PackageManager.MATCH_DEFAULT_ONLY);
    return list.size() > 0;
}

и посмотри, что он вернёт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...