Android启动其他应用(支持跳转应用市场下载)

    xiaoxiao2026-05-19  8

    当我们的应用需要依赖另外一个应用的时候(这个应用很可能是同一个公司旗下的),就会用到隐式启动另一个App,假如用户并没有装这个App呢,我们要帮助他装,所以,帮助用户跳转到应用市场下载App这个需求就出来了,下面我写一下我的实现方式。

    其实也很简单,就是通过隐式启动另一个App,在启动之前先检查这个App有没有安装,如果安装了就启动,没安装就跳转到应用市场。

    1、先建两个model,一个是启动的App,一个是被启动的App。启动的App里就放一个Button,被启动的App里加一行text。

    2、检测被启动App有没有安装

    /** * 检测某个应用是否安装 * * @param context * @param packageName * @return */ public boolean isAppInstalled(Context context, String packageName) { try { context.getPackageManager().getPackageInfo(packageName, 0); return true; } catch (PackageManager.NameNotFoundException e) { return false; } }

    3、安装的话隐式启动这个App

    startActivity(getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME));

    4、如果检测到这个应用没有安装,则跳转到应用市场

    /** * 去市场下载页面 */ public void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { } }

    这样需求就完成了。

    完整代码

    package com.example.v_lzhiy.loadacafrommarkt; import android.content.ActivityNotFoundException; import android.content.Context; import android.content.Intent; import android.content.pm.PackageManager; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; public class MainActivity extends AppCompatActivity { public static final String APP_PACKAGE_NAME = "要跳转应用的包名"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void startACA(View v){ // 判断是否安装过App,否则去市场下载 if (isAppInstalled(this, APP_PACKAGE_NAME)) { startActivity(getPackageManager().getLaunchIntentForPackage(APP_PACKAGE_NAME)); } else { goToMarket(this, APP_PACKAGE_NAME); } } /** * 检测某个应用是否安装 * * @param context * @param packageName * @return */ public boolean isAppInstalled(Context context, String packageName) { try { context.getPackageManager().getPackageInfo(packageName, 0); return true; } catch (PackageManager.NameNotFoundException e) { return false; } } /** * 去市场下载页面 */ public void goToMarket(Context context, String packageName) { Uri uri = Uri.parse("market://details?id=" + packageName); Intent goToMarket = new Intent(Intent.ACTION_VIEW, uri); try { context.startActivity(goToMarket); } catch (ActivityNotFoundException e) { } } }

    转载请注明原文地址: https://ju.6miu.com/read-1309834.html
    最新回复(0)