Как открыть Android-приложение, если оно установлено, и перейти на Android-маркет, если оно не установлено.

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

Как это сделать?

С уважением, Вирак

3 ответа

Решение

Используйте код ниже

String packageName = "app_package_name";
Intent intent = getPackageManager().getLaunchIntentForPackage(packageName);

if(intent == null) {
   intent = new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id="+packageName));
}
  startActivity(intent);

Попробуй с этим -

Просто создайте Button в вашем макете. И, нажав эту кнопку, проверьте условие ниже -

Button calculateButton = (Button) findViewById(R.id.buttonCalculate);
    calculateButton.setOnClickListener(new View.OnClickListener() {

          public void onClick(View v) 
          {
              if(check() == true)
              {
                  PackageManager pack = this.getPackageManager();
                  Intent app = pack.getLaunchIntentForPackage(packagename);
                  startActivity(app);
              }else
              {
                  Intent marketIntent = new Intent(Intent.ACTION_VIEW);
                  marketIntent.setData(Uri.parse("market://details?id=packagename"));
                  startActivity(marketIntent);
              }
         }
    });
}

public boolean check()
{
    try{
        ApplicationInfo info = getPackageManager().getApplicationInfo("packagename", 0 );
        return true;
    } catch( PackageManager.NameNotFoundException e ){
        return false;
    }
}

Внутри онклика

@Override
public void onClick(View view){
  try{
    startActivity(getPackageManager().getLaunchIntentForPackage("applicationId"));
  } catch (PackageManager.NameNotFoundException e) {
    startActivity(new Intent(Intent.ACTION_VIEW).setData(Uri.parse("https://play.google.com/store/apps/details?id=" + "applicationId")));
 }
}

Попробуйте вызвать действие Application из вашего кода, используя другое имя пакета приложения и имя действия или фильтры Intent, принадлежащие тому другому приложению, которое вам нужно вызвать...

    Intent newIntent;
    newIntent = new Intent("other application Package name","class name");
    startActivity(newIntent);

Проверьте, запущен он или нет.

// Если он запущен, ничего не делать

// Если это не так, перейдите в пользовательский интерфейс в Google Play Intent.

  Intent googlePlay = new Intent(Intent.ACTION_VIEW);
  googlePlay.setData(Uri.parse("market://details?id="+"other application package name"));
  startActivity(googlePlay);
Другие вопросы по тегам