Как программно запустить конкретное приложение?
Я хочу запустить конкретное приложение.
Я знаю, как делать намерения, но я хочу избежать выбора меню, если есть несколько приложений, которые могут справиться с намерением, я хочу перейти непосредственно к определенному приложению. Надеюсь, это имеет смысл.
Ответы
Ответ 1
Вы используете имя/класс пакета напрямую, например, чтобы создать новое намерение вызвать программу twidroid, которую вы используете следующий текст ссылки:
Intent intent = new Intent("com.twidroid.SendTweet");
Вероятно, вы захотите установить try/catch для ActivityNotFoundException, если приложение не установлено.
Ответ 2
Вы должны использовать функцию диспетчера пакетов.
Context ctx=this; // or you can replace **'this'** with your **ActivityName.this**
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
// TODO Auto-generated catch block
}
Ответ 3
Intent intent = new Intent();
intent.setClassName("package.name", "package.name.LauncherActivityName");
startActivityForResult(intent,REQUEST_CODE);
Ответ 4
Активность, которую вы вызываете, должна отображаться не только в манифесте для собственного пакета, но и в манифесте для пакета CALLING. - не забывайте!
Ответ 5
Я использую:
try {
Intent intent = new Intent();
intent.setClassName("package.name", "<your_package_name>");
startActivity(intent);
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
Но, как сказал Ками, это тоже будет работать:
try {
Intent i = ctx.getPackageManager().getLaunchIntentForPackage("com.twidroid.SendTweet");
ctx.startActivity(i);
} catch (NameNotFoundException e) {
Log.e(TAG, e.getMessage());
}
Ответ 6
в методе oncreate call => openApp(); метод
private void openApp() {
String packageName = "com.google.android.gm";
if (isAppInstalled(activity, packageName))
startActivity(getPackageManager().getLaunchIntentForPackage(packageName));
else Toast.makeText(activity, "App not installed", Toast.LENGTH_SHORT).show();
}
public static boolean isAppInstalled(Activity activity, String packageName) {
PackageManager pm = activity.getPackageManager();
try {
pm.getPackageInfo(packageName, PackageManager.GET_ACTIVITIES);
return true;
} catch (PackageManager.NameNotFoundException e) {
}
return false;
}
Ответ 7
Предположим, вы хотите открыть Wonder Clock из своего приложения
URL: https://play.google.com/store/apps/details?id=ganesha.diva.app.wonderclock.free&hl=ru.
поле id/имя пакета - наш интерес= ganesha.diva.app.wonderclock.free
Менеджер пакетов отслеживает приложения, установленные на устройстве, и ведет список пакетов. Таким образом, необходимо консультироваться со всем, что связано с установленными приложениями на устройстве, с менеджером пакетов.
Идентификатор пакета или имя пакета уникальны по всему миру, поэтому его можно использовать для проверки наличия пакета/приложения на устройстве.
Чтобы открыть Wonder Clock
из приложения
-
Задать диспетчер пакетов, для активности запуска данного имени пакета
Intent intent = context.getPackageManager().getLaunchIntentForPackage("ganesha.diva.app.wonderclock.free");
- Проверьте, существует ли функция запуска или нет,
if(intent != null) continue...
else приложение не установлено на устройстве, забирает пользователя по URL-адресу - Добавьте необходимые флаги в намерение намерение.setFlags
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- начать действие
startActivity(intent);
Ответ 8
Я разрешил проблему
String packageName = "Your package name";
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);
if(intent == null) {
try {
// if play store installed, open play store, else open browser
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + packageName));
} catch (Exception e) {
intent = new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + packageName));
}
}
startActivity(intent);
Ответ 9
Запустите приложение, используя Intent с ComponentName
ComponentName cName = new ComponentName("packageName","packagename.yourMainActivity");
Intent intent = new Intent("android.intent.action.MAIN");
intent.setComponent(cName);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
mContext.startActivity(intent);
Ответ 10
Что я делаю, чтобы открыть приложения, это
private void _LaunchApp(final String _Pack) {
Intent launchi = new Intent(Intent.ACTION_VIEW);
launchi.setData(Uri.parse("android-app://".concat(_Pack)));
startActivity(launchi);
}
и использование
_LaunchApp("your.package.here");