Подтвердить что ты не робот

Как программно запустить конкретное приложение?

Я хочу запустить конкретное приложение.

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

4b9b3361

Ответ 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");