Android外部调起App方案

背景

日常使用场景中经常需要从app外部唤起app,比如短信链接,浏览器页面点击按钮等。传统的方式都可以使用android系统自带的拦截url ,也就是schema方式,但这种方式在拦截生效时会弹出所有可以处理此连接的app出来供用户选择,如果用户没有选择我们的app,那么这个唤起也就不成功。现在市面上有很多成熟的方案,目前美菜商城采用的是极光魔链sdk来处理。

极光魔链sdk使用

可以参考极光魔链接入方式 极光魔链 - JMLink 产品简介 - 极光文档

商城接入

  1. 接入依赖

 

//极光魔链

implementation(rootProject.ext.dependencies["jmlink"]) {

exclude group: 'com.tencent.mm.opensdk'

}

  1. 配置入口

 

<activity

android:name=".welcome.act.WelComeActivity"

android:enabled="true"

android:icon="@drawable/app_launch_icon"

android:label="${label_name}"

android:screenOrientation="portrait"

android:theme="@style/LauncherAppTheme">

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

<intent-filter>

<!-- 为微信打开APP提供入口 -->

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<data android:scheme="wxb75d18e8d4f35a2a" />

</intent-filter>

<intent-filter>

<!-- 为H5打开APP提供入口 -->

<action android:name="android.intent.action.VIEW" />

<category android:name="android.intent.category.DEFAULT" />

<category android:name="android.intent.category.BROWSABLE" />

<data android:scheme="meicaistore" />

</intent-filter>

</activity>

  1. 极光魔链平台设置app

  2. 代码初始化

...

private static final String TASK_MW_INIT = "TASK_MW_Init";//魔窗

private static final String TASK_JM_LINK = "Task_Jm_Link";//极光魔链

...

case TASK_MW_INIT:

return new Task(TASK_MW_INIT, false) {

@Override

public void run() {

MainApp.getInstance().getUserPrefs().deepLinkUrl().set("");

registerForMLinkCallback();

if (uri != null) {

redirectUri(uri);

} else {

JMLinkAPI.getInstance().replay(new MyReplayCallback(mContext));

}

}

};

case TASK_JM_LINK:

return new Task(TASK_JM_LINK, false) {

@Override

public void run() {

//极光魔链SDK从浏览器直接转跳到APP具体页面

JMLinkAPI.getInstance().setDebugMode(BuildConfig.TEST_ENTRY);

JMLinkAPI.getInstance().init(mContext.getApplicationContext());

}

};

...

private void registerForMLinkCallback() {

JMLinkAPI.getInstance().registerDefault((map, uri) -> {

if (uri != null) {

LogUtils.e("===jmlink=execute==" + uri.toString());

redirectUri(uri);

}

});

}

/**

* scheme及魔窗短链启动APP指定页面

*

* @param uri intent data

*/

private void redirectUri(Uri uri) {

LogUtils.e("===jmlink===" + uri.toString());

//取出短链中的url,url的value需要encode

String routerUrl = uri.getQueryParameter("url");

if (!TextUtils.isEmpty(routerUrl)) {

LogUtils.e("===jmlink===" + routerUrl);

MainApp.getInstance().getUserPrefs().deepLinkUrl().set(URLDecoder.decode(routerUrl));

} else {

MainApp.getInstance().getUserPrefs().deepLinkUrl().set("");

}

}

...

public void unregisterJMLink() {

JMLinkAPI.getInstance().unregisterDefault();

}

  1. 魔链设置

可以在平台上设备短链接

 具体操作可以参考极光魔链接入方式 中接入指南一项 极光魔链 - JMLink 产品简介 - 极光文档

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值