欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

Android跳转到应用商店的APP详情页面实现方案

程序员文章站 2023-04-06 23:10:01
android跳转到应用商店的app详情页面。 项目流程:从app内部点击button按钮或者相应的条目,跳转到应用商店的某个app的详情页面。 实现: 第一步:导入获取手机app工具类 pub...

android跳转到应用商店的app详情页面。

项目流程:从app内部点击button按钮或者相应的条目,跳转到应用商店的某个app的详情页面。

实现:

第一步:导入获取手机app工具类

public class marketutils {
    /**
     * 获取已安装应用商店的包名列表
     * 
     * @param context
     * @return
     */
    public static arraylist queryinstalledmarketpkgs(context context) {
        arraylist pkgs = new arraylist();
        if (context == null)
            return pkgs;
        intent intent = new intent();
        intent.setaction("android.intent.action.main");
        intent.addcategory("android.intent.category.app_market");
        packagemanager pm = context.getpackagemanager();
        list infos = pm.queryintentactivities(intent, 0);
        if (infos == null || infos.size() == 0)
            return pkgs;
        int size = infos.size();
        for (int i = 0; i < size; i++) {
            string pkgname = "";
            try {
                activityinfo activityinfo = infos.get(i).activityinfo;
                pkgname = activityinfo.packagename;
            } catch (exception e) {
                e.printstacktrace();
            }
            if (!textutils.isempty(pkgname))
                pkgs.add(pkgname);
 
        }
        return pkgs;
    }
 
    /**
     * 过滤出已经安装的包名集合
     * 
     * @param context
     * @param pkgs
     *            待过滤包名集合
     * @return 已安装的包名集合
     */
    public static arraylist filterinstalledpkgs(context context,
            arraylist pkgs) {
        arraylist empty = new arraylist();
        if (context == null || pkgs == null || pkgs.size() == 0)
            return empty;
        packagemanager pm = context.getpackagemanager();
        list installedpkgs = pm.getinstalledpackages(0);
        int li = installedpkgs.size();
        int lj = pkgs.size();
        for (int j = 0; j < lj; j++) {
            for (int i = 0; i < li; i++) {
                string installpkg = "";
                string checkpkg = pkgs.get(j);
                try {
                    installpkg = installedpkgs.get(i).applicationinfo.packagename;
                } catch (exception e) {
                    e.printstacktrace();
                }
                if (textutils.isempty(installpkg))
                    continue;
                if (installpkg.equals(checkpkg)) {
                    empty.add(installpkg);
                    break;
                }
 
            }
        }
        return empty;
    }
 
    /**
     * 启动到app详情界面
     * 
     * @param apppkg
     *            app的包名
     * @param marketpkg
     *            应用商店包名 ,如果为""则由系统弹出应用商店列表供用户选择,否则调转到目标市场的应用详情界面,某些应用商店可能会失败
     */
    public static void launchappdetail(string apppkg, string marketpkg) {
        try {
            if (textutils.isempty(apppkg))
                return;
            uri uri = uri.parse("market://details?id=" + apppkg);
            intent intent = new intent(intent.action_view, uri);
            if (!textutils.isempty(marketpkg))
                intent.setpackage(marketpkg);
            intent.addflags(intent.flag_activity_new_task);
            myapp.getmyapp().startactivity(intent);
        } catch (exception e) {
            e.printstacktrace();
        }
    }
}

第二部: 实现工具类的lanunchappdetail方法

 marketutils.launchappdetail("第一个参数目标app的包名;","第二个参数:应用商店包名");

注意:如果 应用商店包名为空 就会将手机上已下载的应用商店都列出来,让你选择一个进行跳转。

    /*
    *主流应用商店对应的包名如下:
 com.android.vending     google play
 com.tencent.android.qqdownloader    应用宝
 com.qihoo.appstore   360手机助手
 com.baidu.appsearch 百度手机助
 com.xiaomi.market  小米应用商店
 com.wandoujia.phoenix2 豌豆荚
 com.huawei.appmarket  华为应用市场
 com.taobao.appcenter  淘宝手机助手
 com.hiapk.marketpho 安卓市场
 cn.goapk.market 安智市场
    * */
 希望可以给大家带来帮助。