android跳转其他app

需求

公司有两款app需要联动,从一款app打开另一款,所以需要进行app跳转


实现

基本逻辑就是在一款app中点击打开另一款app时,在本机对于app进行查找和判断,查看本地是否存在,如果不存在跳转app下载页
如果存在就跳转到另一个app的首个activity

代码

public class PackageUtil {

    /**
     * 跳转其他app  跳转首个activity不需要 export
     * @param context 上下文
     * @param packageName 全包名
     * @param className 首个activity名称
     */
    public static void jumpToApp(Context context,String packageName, String className) {
        Intent intent = new Intent(Intent.ACTION_MAIN);
        intent.addCategory(Intent.CATEGORY_LAUNCHER);
        ComponentName cn = new ComponentName(packageName, className);
        intent.setComponent(cn);
        context.startActivity(intent);
    }

    /**
     * 判断app是否安装
     * @param context 上下文
     * @param packageName 全包名
     * @return
     */
    public static boolean isAppInstalled(Context context, String packageName) {
        final PackageManager packageManager = context.getPackageManager();
        List<PackageInfo> pinfo = packageManager.getInstalledPackages(0);
        List<String> pName = new ArrayList<String>();
        if (pinfo != null) {
            for (int i = 0; i < pinfo.size(); i++) {
                String pn = pinfo.get(i).packageName;
                pName.add(pn);
            }
        }
        return pName.contains(packageName);
    }

    /**
     * 打开外部浏览器下载
     * @param context
     * @param downloadWebUrl
     */
    public static void jumpToWeb(Context context ,String downloadWebUrl) {
        Intent intent = new Intent();
        intent.setAction("android.intent.action.VIEW");
        Uri content_url = Uri.parse(downloadWebUrl);
        intent.setData(content_url);
        context.startActivity(intent);
    }
}
主程序逻辑代码

  if (PackageUtil.isAppInstalled(mActivity, CHONGHAO_PACKAGE_NAME)) { //app存在
                            //跳转app
                            try {
                                PackageUtil.jumpToApp(mActivity, "com.example.app", "com.example.app.activity.MainActivity");
                                //   PackageUtil.jumpToApp(mActivity, CHONGHAO_PACKAGE_NAME, CHONGHAO_PACKAGE_NAME);
                            } catch (Exception e) {
                                showToast("跳转失败,请安装最新版");
                                PackageUtil.jumpToWeb(mActivity, "http://www.baidu.com");
                            }


                        } else {//没有安装app 去下载
                            PackageUtil.jumpToWeb(mActivity, "http://www.baidu.com");
                        }

注意

如果跳转的不是app的首个activity 需要将跳转的app暴露出来
在注册文件中添加 export属性

  
        <activity
            android:name=".activity.SecondActivity"
            android:exported="true"/>

        <activity



猜你喜欢

转载自blog.csdn.net/jiushiwo12340/article/details/78978614