Android实现外部App互信跳转SDK

  • 需求描述
    最近项目上有个需求,要实现外部App跳转到自身App,并在自己App中实现免密登录功能。功能不算难,做个笔记,方便以后使用。

  • 功能分析
    1、FirstApp提供SDK的jar包,SecondApp负责调用jar包中的toActivity方法
    2、在toActivity方法中实现FirstApp提供的后台服务,验证SecondApp的合法性
    3、接口请求成功后,实现SecondApp到FirstApp之间的跳转功能,并传值
    4、FirstApp接收到SecondApp传来的值,进行登录校验

  • 代码实现
    1、在SecondApp中引入AppBridge的jar包,并调用AppBridge中的toActivity方法

String env = EnvUtil.UAT; // 测试环境
AppBridge appBridge = new AppBridge(env);
appBridge.toActivity(MainActivity.this, "参数1","参数2", new BridgeCallback() {
      @Override
      public boolean success(String result) {
          tv_response.setText(result);
          return super.success(result);
      }

      @Override
      public void fail(int code, String message) {
          tv_response.setText(message);
      }
 });

2、进入AppBridge核心实现类,在此类中会请求一个服务接口,这个接口的作用是验证SecondApp的合法性,首先要提前将SecondApp的应用名、包名和证书的sha1值存储到FirstApp服务的数据库中,然后请求接口的时候将Second客户端的包名和证书的sha1值传到FirstApp的服务器验证,这里如果不是使用https请求,参数需要加密处理。

public class AppBridge {
    private static final String TAG = AppBridge.class.getSimpleName();
    private String env;

    // 构造函数,将测试环境初始化
    public AppBridge(String env) {
        this.env = env;
    }

     /**
     * 跳转到app,并传入相关参数
     *
     * @param context    上下文
     * @param userName   用户名
     * @param role       用户角色
     * @param callback
     */
    public void toActivity(final Context context, final String userName, final String role, final  BridgeCallback callback) {
        if (callback == null) {
            return;
        }
        // 验证要跳转的app是否已经安装
        if (!EnvUtil.isAPKExists(context, EnvUtil.getPackageName(env))) {
            callback.fail(BridgeResponse.APP_NOT_EXISTS, "应用不存在.");
            return;
        }
        // 验证SecondApp的证书是否能正常读取
        String sign = EnvUtil.getSign(context);
        if (sign == null) {
            callback.fail(BridgeResponse.APP_SIGN_ERROR, "证书异常.");
            return;
        }
        String params = "{\"InArgs\":{},\"XM\":{\"Sign\":\"" + sign
                + "\",\"PackageName\":\"" 
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ruiurrui

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值