app跳转到指定app

375 阅读1分钟

你开发过程中是否遇到这样子的需求:从当前的app跳转到别的指定app,并且打开指定app的某个页面呢?如果你有这样子的需求,那么本文正好适合你的需求。

public class ActionActivity extends BaseActivity {

    //指定app的包名
    private static final String BKG = "";
    //app的页面名字(class),需要带上映射路径
    private static final String CLASS_NAME = "";
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_action);
        this.findViewById(R.id.go_action).setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                PackageInfo packageInfo = Utils.getAppPackageInfo(ActionActivity.this, BKG);
                if(packageInfo != null)
                {
                    if(packageInfo.versionCode > 26)
                    {
                        openApp();
                    }
                    else
                    {
                        Toast.makeText(ActionActivity.this, "应用版本过低", Toast.LENGTH_SHORT).show();
                        goMarket();
                    }
                }
                else
                {
                    goMarket();

                }
            }
        });
    }

    /**
     * 跳转到应用
     */
    private void openApp() {
        Intent  intent = new Intent();
        intent.setComponent(new ComponentName(BKG, CLASS_NAME));
        intent.setAction(Intent.ACTION_VIEW);
        startActivity(intent);
    }

    /**
     * 跳到应用市场下载
     */
    private void goMarket(){
        try
        {
            Uri uri = Uri.parse("market://details?id=" + BKG);
            Intent intent = new Intent(Intent.ACTION_VIEW, uri);
            startActivity(intent);
        }
        catch(ActivityNotFoundException notFoundException)
        {
            Toast.makeText(ActionActivity.this, "没有安装应用市场", Toast.LENGTH_SHORT).show();
            notFoundException.printStackTrace();
        }
    }
}

本文内容很简单,需要指定app的包名和页面名(带上映射路径)即可,当你的手机上没有安装应用的时候就会跳转到应用市场下载.如果安装了该应用直接跳转到页面,逻辑实现主要看你的需求。